Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript (Часть 2)

Автор: mezi
Дата сообщения: 02.06.2012 22:02
Всем привет ребята, есть вопрос, не знаю туда ли, ели что подскажите куда
вопрос: есть установчики, автораны, которые копируют свои файлы в буфер(Buffer) - как получить эти файлы вручную или можна ли создать скрипт на любом языке(делфи, инно, VB) ?
всем спасибо
Автор: korggrodno
Дата сообщения: 13.06.2012 11:24
помогите найти ошибку в скрипте TC_ramtex.vbs
http://www.everfall.com/paste/id.php?e7s8np2jnce3
Его задача запустить тотал коммандер с нужными правами.
Первый раз после включения компьютера не срабатывает.
Вылетают вот такие ошибки смотрите скрин.
http://rghost.net/38633784/image.png
Затем вылетает отладчик дефолтный.
Затем закрываю отладчик и окна ошибок.
И после этого скрипт работает отлично
до следующего включения компьютера.
Автор: Black_Lung
Дата сообщения: 13.06.2012 14:32
mezi
В сообщении сразу за твоим есть ссылка на пример скрипта vbs.
Вытащить данные из буфера программы с помощю скриптов сложно. Гугли ReadProcessMemory


korggrodno
Зачем ".\..\" ?
Автор: korggrodno
Дата сообщения: 13.06.2012 17:50
ну типа выйти из текущей папки на один уровень вверх
Автор: Black_Lung
Дата сообщения: 19.06.2012 12:26

Цитата:
ну типа выйти из текущей папки


возможно из-за этого ошибка, выход - это "..\"
Почему нельзя просто прописать полный путь?
Автор: korggrodno
Дата сообщения: 22.06.2012 09:14

Цитата:
Black_Lung


Цитата:
возможно из-за этого ошибка, выход - это "..\"
Почему нельзя просто прописать полный путь?


Полный путь нельзя потому что я не знаю где будет лежать мой портативный тотал.
А вообще огромное спасибо.
Именно в этом и была проблема.
Помогло.
Теперь проблемы нету.
Благодарю.

Автор: kolonium
Дата сообщения: 27.06.2012 02:00
' скрипт для удaления времeнных файлов
On Error Resume Next

strFldr = Wscript.arguments.Item(1)
Set objFSO = CreateObject("Scripting.FileSystemObject")

ClearFolder strFldr

Function ClearFolder(sFldr)
On Error Resume Next
Dim oD, cF, cD, oI

Set oD = objFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders

For Each oI In cF
oI.Attributes = 0
oI.Delete
Next

For Each oI In cD
ClearFolder oI.Path
oI.Attributes = 0
oI.Delete
Next
End Function
*******************
пример запуска (через cmd):
cscript //Nologo C:\cscript.vbs "%HOMEPATH%\Local Settings\Temporary Internet Files\Content.IE5" >MyCleanupScript.Log

Cкрипт отрабатывает, но создает пустой лог, как это реализовать и как сделать, чтобы скрипт работал для всех профилей юзеров
Автор: Black_Lung
Дата сообщения: 27.06.2012 10:56
kolonium
arguments.Item нужно поставить 0
Для лога нужен вывод, например wscript.echo "Deleteing.."&oI.Path
Для получения всех профилей можно использовать реестр, значение ProfileImagePath подставлять вместо %HOMEPATH%.
Автор: kolonium
Дата сообщения: 27.06.2012 11:42

Цитата:
arguments.Item нужно поставить 0
Для лога нужен вывод, например wscript.echo "Deleting.."&oI.Path
Для получения всех профилей можно использовать реестр, значение ProfileImagePath подставлять вместо %HOMEPATH%.


сделал как написано, что-то не выходит каменный цветок, можно пример в исполнении

когда ставлю strFldr = Wscript.arguments.Item(0)
вообще не чистит
Автор: Black_Lung
Дата сообщения: 27.06.2012 14:46
[more]
strFldr = Wscript.arguments.Item(0)
et objFSO = CreateObject("Scripting.FileSystemObject")

ClearFolder strFldr

Function ClearFolder(sFldr)
Dim oD, cF, cD, oI

Set oD = objFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders
on error resume next
For Each oI In cF
wscript.echo oi.path
oI.Attributes = 0
    oI.Delete
Next

For Each oI In cD
ClearFolder oI.Path
oI.Attributes = 0
oI.Delete
Next
End Function
[/more]

В win7 раьотает, но только если перед %HOMEPATH% ставить букву диска
Автор: kolonium
Дата сообщения: 27.06.2012 15:26
Black_Lung

Цитата:
Подробнее...

у меня это выдаёт :



на XP,

Цитата:
В win7 раьотает, но только если перед %HOMEPATH% ставить букву диска

на w7 ещё не проверял, первоначальный скрипт, что без лога, работает под всеми системами (w2k3r2sp2,XP,7), т.е. сомнений в его работе нет, только лога не хватает, и всех профилей юзвирей
Автор: Black_Lung
Дата сообщения: 27.06.2012 15:53
Когда вставлял в форум, случайно стёр букву S.
Автор: kolonium
Дата сообщения: 27.06.2012 16:45
Black_Lung

Цитата:
Когда вставлял в форум, случайно стёр букву S

да точно, не посмотрел, теперь выдаёт следующее:


заранее, хотелось бы увидеть пример с профилями юзеров, если не сложно, конечно
Автор: Black_Lung
Дата сообщения: 27.06.2012 16:57
Скрипт теоритически работает с любым абсолютным путём, но могут быть проблемы с %HOMEPATH%
Создать для теста например C:\temp набросать туда файлов и папок и запустить с указанием пути C:\temp
Автор: kolonium
Дата сообщения: 27.06.2012 19:10
Black_Lung

Цитата:
Скрипт теоритически работает с любым абсолютным путём

это понятно, только мне надо что-то наподобие :
For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /V ProfilesDirectory') Do Set Profiles=%%J
Call Set Profiles=%Profiles%

For /F "Delims=" %%I In ('Dir /B /AD-S-H "%Profiles%" ^| FindStr /V /B /I /C:"All Users"') Do

только на VBS

и потом так и не ясно, что за ошибка



вопрос всё ещё актуален, может кто подскажет, хотя бы, как правильно добавить вывод в файл, чтобы первоначальный скрипт логировал
Автор: kolonium
Дата сообщения: 29.06.2012 13:46
Black_Lung

Цитата:
arguments.Item нужнo поставить 0
Для лога нужен вывод, нaпример wscript.echo "Deleteing.."&oI.Path


Цитата:
Подробнее... [?]

strFldr = Wscript.arguments.Item(0)  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
   
ClearFolder strFldr  
   
Function ClearFolder(sFldr)  
    Dim oD, cF, cD, oI  
   
Set oD = objFSO.GetFolder(sFldr)  
Set cF = oD.Files  
Set cD = oD.SubFolders  
on error resume next  
    For Each oI In cF  
       wscript.echo oi.path
       oI.Attributes = 0  
    oI.Delete  
    Next  
 
    For Each oI In cD  
      ClearFolder oI.Path  
      oI.Attributes = 0  
      oI.Delete  
    Next  
End Function


работают только такие варианты, но только, если стоит цифра 1 в arguments.Item(1), но без лога и с выводом msgbox на экран перед каждым файлом :

1_________

On Error Resume Next

strFldr = Wscript.arguments.Item(1)
Set objFSO = CreateObject("Scripting.FileSystemObject")

ClearFolder strFldr

Function ClearFolder(sFldr)
On Error Resume Next
Dim oD, cF, cD, oI

Set oD = objFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders

For Each oI In cF
Wscript.echo oi.path
oI.Attributes = 0
oI.Delete
Next

For Each oI In cD
ClearFolder oI.Path
oI.Attributes = 0
oI.Delete
Next
End Function

2________

strFldr = Wscript.arguments.Item(1)
Set objFSO = CreateObject("Scripting.FileSystemObject")

ClearFolder strFldr

Function ClearFolder(sFldr)
On Error Resume Next
Dim oD, cF, cD, oI

Set oD = objFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders

For Each oI In cF
Wscript.echo oi.path
oI.Attributes = 0
oI.Delete
Next

For Each oI In cD
ClearFolder oI.Path
oI.Attributes = 0
oI.Delete
Next
End Function

3_________

strFldr = Wscript.arguments.Item(1)
Set objFSO = CreateObject("Scripting.FileSystemObject")

ClearFolder strFldr

Function ClearFolder(sFldr)
On Error Resume Next
Dim oD, cF, cD, oI

Set oD = objFSO.GetFolder(sFldr)
Set cF = oD.Files
Set cD = oD.SubFolders
on error resume next

For Each oI In cF
Wscript.echo oi.path
oI.Attributes = 0
oI.Delete
Next

For Each oI In cD
ClearFolder oI.Path
oI.Attributes = 0
oI.Delete
Next
End Function
Автор: YURETS777
Дата сообщения: 29.06.2012 14:01
Можно ли на VBS сделать такой скрипт, который бы в цикле (скажем раз в минуту) проверял наличие диалогового окна с кнопкой "Пропустить" и нажимал эту кнопку ?
Автор: Real Root
Дата сообщения: 29.06.2012 14:42
YURETS777
key = True
        do while key
            If WshShell.AppActivate("Название окна") Then
            WshShell.SendKeys "{ENTER}"
            key = False
            end If
            WScript.Sleep 60 000
        Loop

Добавлено:
Если по Enter нажимается не "Пропусттить, то тогда посчитайте, сколько раз нужно нажать TAB для того чтобы фокус переходил на пропустить и допишите перед строкой WshShell.SendKeys "{ENTER}" нужно колличество строк WshShell.SendKeys "{TAB}"
Автор: YURETS777
Дата сообщения: 29.06.2012 15:33
Real Root
Не жмется
ОС -Win7 SP1 Ru
Окно такое:


Скрипт сейчас такой:

Set WshShell = WScript.CreateObject("WScript.Shell")
key = True
do while key
If WshShell.AppActivate("Пропустить") Then
WshShell.SendKeys "{ENTER}"
key = False
end If
WScript.Sleep 60000
Loop

Автор: YURETS777
Дата сообщения: 29.06.2012 18:02
Короче,попробовал в Autoit 3.3.8.1

Скрипт получился таким.


Код:

$sTitle = 'Total Commander'
While 1
$hWindow = WinWait($sTitle, 'Пропустить', 5) ;ждем появления окна с заголовком $sTitle и текстом Пропустить 5 секунд
If $hWindow Then
;если окно дождались, то $hWindow это идентификатор (Handle) этого окна.
ControlClick($hWindow, '', 'TButton3')
;кликаем по кнопке Пропустить
EndIf
Sleep(10000)
Wend

Автор: Dekabryi
Дата сообщения: 03.07.2012 06:53
Всем привет !
F1

не могу разобратся со скриптом.
в чем засада понять не могу .

****
set FSO = CreateObject("Scripting.FileSystemObject")
txtcsv = "xxxxx.csv"
if fso.FileExists(txtcsv) Then
set CSVFile = FSO.OpenTextFile(txtcsv,8,true)
Else
set CSVFile = FSO.CreateTextFile(txtcsv)
        CSVFile.WriteLine "Пользователь, Компьютер"

end If
' Подбор данных из файла Комп
        Const ForReading=1
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objTS=objFSO.OpenTextFile("comp.txt",ForReading)

arrServers=Split(objTS.ReadAll,VbCrLf)
objTS.Close

For Each server In arrServers
strServer=Ucase(Trim(server))
On Error Resume Next
    If Len(strServer)>0 Then WScript.Echo strServer
            strUser= "Нет Пользователя"
Set objWMIService = GetObject("winmgmts:\\" & strServer & "\root\cimv2")
Set colUser = objWMIService.ExecQuery("Select * FROM Win32_ComputerSystem")

For Each objItem In colUser
    strUser= objItem.UserName

CSVFile.WriteLine strUser & "," & strServer
        Next
        Erase strUser
        next
****

Скрипт сам отрабатывает нормально, но вот засада в том что .
Если по списку машина доступна, а следующие 2-все не доступны , данные в скрипте будут вот в таком виде.
MyDomain\user1,Computer1
MyDomain\user1,Computer1
MyDomain\user1,Computer1
MyDomain\user1,Computer1
MyDomain\user5,Computer5

Хотя список хостов
Computer1
Computer2
Computer3
Computer4
Computer5

После того как доходит до доступного компа данные пишутся нормально.

А мне необходимо что бы вместо повторов писал "Недоступен, Computer2"

Подскажите плиз !
Автор: kolonium
Дата сообщения: 03.07.2012 10:01
'Очищаем временные папки
Dim fso, fso1, sfso, i, s, file, files
Dim folder_count, file_count
Dim d_temp,c_temp, local_temp,Cookie,internet_temp, log
Dim s_, folder_count_, file_count_ ,folder_

set fso = CreateObject("Scripting.FileSystemObject")
' папочки можно и дополнить
d_temp = "c:\windows\temp"
c_temp = "c:\temp"
local_temp = "c:\Documents and Settings\%username%\Local Settings\Temp"
Cookie = "c:\Documents and Settings\%username%\Cookies"
internet_temp = "%HOMEDRIVE%\DOCUME~1\%username%\LOCALS~1\Tempor~1\Content.IE5"
'файл лога, необходимо создать пердварительно
log = "d:\clear.log"
doc = "%HOMEPATH%\Recent"
opera_cache = "C:\Documents and Settings\%username%\Application Data\Opera\Opera\profile\cache4\"

'процедура инициализации
sub init
on error resume next
set file = fso.GetFile (log)
if fso.FileExists(log) then
if file.size > 1024000 then WScript.Echo "Внимание!" & CHR (13) & CHR (10) & "Размер лога больше 1 Мб"
end if

set file = fso.OpenTextFile(log, 8, true)

s= "Очистка временных файлов от : " & Date & " " & Time & CHR (13) & CHR (10)
s=s+"CopyRight @ andrvm" + CHR (13) + CHR (10)

file.Write s

set file=nothing
end sub

'процедура финализации
sub final
set file = fso.OpenTextFile(log, 8, true)
s = CHR (13) & CHR (10) & "Всего папок - " & Folder_Count & CHR (13) & CHR (10) & "Всего файлов - " & File_count & CHR (13) & CHR (10)
file.Write s
s = "Не удалось удалить папок - " & Folder_Count_ & CHR (13) & CHR (10) & "файлов - " & file_count_ & CHR (13) & CHR (10)
file.Write s
s = "Вот они: " & folder_ & CHR (13) & CHR (10) & s_ & CHR (13) & CHR (10)
file.Write s
s = "Завершено в " & Time & CHR (13) & CHR (10) & CHR (13) & CHR (10)
file.Write s
set file = nothing
end sub

'процедура удаления файлов в каталоге
sub dir_clear (dir_name)
if fso.FolderExists(dir_name) then
'1. сформируем для лога список папок, которые будем удалять (заодно установим нужные аттрибуты)
set fso1 = fso.GetFolder (dir_name)
set sfso=fso1.SubFolders
Set file = fso.OpenTextFile(log, 8, true)

for each i in sfso
i.attributes=0
s= dir_name + "\"
s = s + i.name + CHR (13) + CHR (10)
file.Write s
next

Folder_count = Folder_count + sfso.Count

'2. сформируем для лога список файлов, которые будем удалять (заодно установим нужные аттрибуты)
set files = fso1.Files
for each i in files
i.attributes=0
s= dir_name + "\"
s = s + i.name + CHR (13) + CHR (10)
file.Write s
next

File_count = File_count + files.count

'3. Удаляем теперь все

for each i in files
on error resume next
i.Delete
'если файл не может быть удален
if err then
s_= s_ & dir_name & "\" & i.name & CHR (13) & CHR (10)
file_count_=file_count_ + 1
end if
next

for each i in sfso
on error resume next
i.Delete
'если папка не может быть удалена
if err then
folder_= folder_ & dir_name & "\" & i.name & CHR (13) & CHR (10)
folder_count_=folder_count_ + 1
end if
next

set file = nothing
set fso1 = nothing
set sfso =    nothing
set files = nothing

end if
end sub

'инициализация
init
'очищаем
dir_clear (d_temp)
dir_clear (c_temp)
dir_clear (local_temp)
dir_clear (internet_temp)
dir_clear (Cookie)
dir_clear (doc)
dir_clear (opera_cache)
'финализация
final
set fso = nothing

что нужно подправить в скрипте, чистится только папка Windows |Temp
Автор: Black_Lung
Дата сообщения: 03.07.2012 11:23
Dekabryi
попробуй этот вариант:


Код:
p=pipi(comp)
p=p+pipi(comp)
p=p+pipi(comp)
    if p=0 then
    user="No Ping "&comp
'Недоступен
    else
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & comp & "\root\cimv2")
    Set colComputer = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
        For Each objComputer in colComputer
        user=objComputer.UserName
        next
    end if


Function pipi(comp)
pipi=1

qr="Select * From Win32_PingStatus where Address= '"&comp&"'"

Set objWMIService = GetObject(_
"winmgmts:\\.\root\cimv2")
Set colPings = objWMIService.ExecQuery(qr)

For Each objStatus in colPings
If IsNull(objStatus.StatusCode) _
or objStatus.StatusCode<>0 Then
    pipi=0
    Exit Function
End If
Next

End Function
Автор: kolonium
Дата сообщения: 04.07.2012 11:48
Black_Lung

Цитата:
Прописать получение % переменых, vbs напрямую с ними не работает .
Код:

Set WshShell = WScript.CreateObject("WScript.Shell")
username = wshShell.ExpandEnvironmentStrings("%username%")


'Очищаем временные папки
Dim fso, fso1, sfso, i, s, file, files
Dim folder_count, file_count
Dim d_temp, c_temp, local_temp, Cookie, internet_temp, log
Dim s_, folder_count_, file_count_ ,folder_

set fso = CreateObject("Scripting.FileSystemObject")
' папочки можно и дополнить
Set WshShell = WScript.CreateObject("WScript.Shell")
d_temp = wshShell.ExpandEnvironmentStrings("c:\windows\temp")
c_temp = wshShell.ExpandEnvironmentStrings("c:\temp")
Cookie = wshShell.ExpandEnvironmentStrings("c:\Documents and Settings\%username%\Cookies")
internet_temp = wshShell.ExpandEnvironmentStrings("%HOMEDRIVE%\DOCUME~1\%username%\LOCALS~1\Tempor~1\Content.IE5")
doc = wshShell.ExpandEnvironmentStrings("%HOMEPATH%\Recent")
opera_cache = wshShell.ExpandEnvironmentStrings("C:\Documents and Settings\%username%\Application Data\Opera\Opera\profile\cache4\")
'файл лога, необходимо создать пердварительно
log = wshShell.ExpandEnvironmentStrings("d:\clear.log")

спасибо, в таком варианте работает

теперь бы ещё разобраться как извлекать профили юзеров для обработки через реестр по типу :

SetLocal EnableExtensions

For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /V ProfilesDirectory') Do Set Profiles=%%J
Call Set Profiles=%Profiles%

For /F "Delims=" %%I In ('Dir /B /AD-S-H "%Profiles%" ^| FindStr /V /B /I /C:"All Users"') Do (

ну что-то вроде этого :
'#######################################################
On Error Resume Next

Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."

Set objRegistry=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

Set objFSO = CreateObject("Scripting.FileSystemObject")

strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys
'каким образом объединить скрипт,что я приводил с этим
'#######################################################

да и под семеркой не работает, вот с этой части :
for each i in sfso

в части кода :

for each i in sfso
i.attributes=0
s= dir_name + "\"
s = s + i.name + CHR (13) + CHR (10)
file.Write s
next
Автор: Leon1978
Дата сообщения: 11.07.2012 08:41
есть такой скрипт, чтобы прописывать логин, ip, время.
На windows 7 pro * 64 работает, но вот когда я его пытаюсь запустить в windows server 2008 r2 начинаются ошибки, invalid index line 15, char 4.
Разве есть разница между скриптами для win 7 и win 2008 r2?

'Пишем в AD имя залогиненного в ПК + ip
'=========================================================================
Dim adsinfo, ThisComp, oUser, ips,ipadr,WSHShell
Set adsinfo = CreateObject("adsysteminfo")
Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName)
Set oUser = GetObject("LDAP://" & adsinfo.UserName)

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Set IPConfigSet = objWMI.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
ipadr=IPConfig.IPAddress(i)
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
ips=ips+" "+IPConfig.IPAddress(i)
Next
End If
Next
Thiscomp.put "description", "Login: " + oUser.cn + "; IP: "+ ips+"; "+ "Time: " + CStr(Now)
ThisComp.Setinfo
Автор: DieMaN
Дата сообщения: 13.07.2012 08:27
Здравствуйте. Ниже скрипт который всем пользователям домена на рабочий стол помещает ярлык на программу. А какую строчку добавить чтобы ярлык не перезаписывался каждый раз? Т.е. чтобы при выполнении скрипта проверялось наличие ярлыка на рабочем столе.

Set objShell = WScript.CreateObject("WScript.Shell")
strDesktopFolder = objShell.SpecialFolders("Desktop")
Set objShortCut = objShell.CreateShortcut(strDesktopFolder & _
"\Техэксперт.lnk")
objShortCut.TargetPath = chr(34) & "\\Vgpserv\techexpert_client\texclient.exe" & chr(34)
ObjShortCut.IconLocation = "\\Vgpserv\techexpert_client\texclient.exe, 0"
objShortCut.Description = "Техэксперт"
objShortCut.Save
Автор: Black_Lung
Дата сообщения: 16.07.2012 10:03
Leon1978
ipadr=IPConfig.IPAddress(i) Использование i до явного назначения

DieMaN
[more]
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
strDesktopFolder = objShell.SpecialFolders("Desktop")
on error resume next
if fso.GetFile(strDesktopFolder&"\Техэксперт.lnk") is nothing then
Set objShortCut = objShell.CreateShortcut(strDesktopFolder & _
"\Техэксперт.lnk")
objShortCut.TargetPath = chr(34) & "\\Vgpserv\techexpert_client\texclient.exe" & chr(34)
ObjShortCut.IconLocation = "\\Vgpserv\techexpert_client\texclient.exe, 0"
objShortCut.Description = "Техэксперт"
objShortCut.Save
end if
[/more]
Автор: NecroTYN
Дата сообщения: 23.07.2012 08:32
Здравствуйте господа форумчане !!!
Помогите пожалуйста с решением следующей задачи -
Есть код для вычисления даты выдачи заказа по количеству рабочих дней:
[more=КОД]
Код:

Option Explicit

Const adOpenStatic = 3
Const adLockOptimistic = 3

Dim strDatabase
Dim lngID

Dim objFSO
Dim objConnection
Dim objRecordset

Dim dtStartDate
Dim dtEndDate
Dim lngCount

Dim prevLocale


If WScript.Arguments.Count = 2 Then
strDatabase = Mid(WScript.Arguments.Item(0), 2)
lngID = Mid(WScript.Arguments.Item(1), 2)

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objConnection = WScript.CreateObject("ADODB.Connection")
Set objRecordset = WScript.CreateObject("ADODB.Recordset")

If objFSO.FileExists(strDatabase) Then
objConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = '" & strDatabase & "'"

With objRecordset
.Open "SELECT * FROM qdfOrders WHERE ID = " & CStr(lngID) & "", objConnection, adOpenStatic, adLockOptimistic
dtStartDate = CDate(.Fields.Item("OrderDate").Value)
.Close

.Open "SELECT * FROM tblHolidays", objConnection, adOpenStatic, adLockOptimistic

dtEndDate = dtStartDate
lngCount = 0

Do Until lngCount >= 21
dtEndDate = DateAdd("d", 1, dtEndDate)

Select Case WeekdayName(Weekday(dtEndDate))
Case "суббота", "воскресенье"

Case Else
prevLocale = SetLocale("en-us")
.Filter = "HolidayDate = #" & dtEndDate & "#"
SetLocale(prevLocale)

If .RecordCount = 0 Then
lngCount = lngCount + 1
End If
End Select
Loop

.Close
End With

prevLocale = SetLocale("en-us")
objConnection.Execute "UPDATE qdfOrders SET DoneDate = #" & dtEndDate & "# WHERE ID = " & CStr(lngID) & ""
SetLocale(prevLocale)

objConnection.Close
Else
WScript.Echo "Database file [" & strDatabase & "] not found"
End If

Set objRecordset = Nothing
Set objConnection = Nothing
Set objFSO = Nothing
Else
WScript.Echo "Usage from toolbar on [Склад и торговля]:"
WScript.Echo "" & WScript.ScriptName & " /[CurrentDB] /[ID]"
End If

WScript.Quit 0
Автор: freedom83
Дата сообщения: 03.08.2012 06:33
Добрый день.
Как отследить изменение памяти процесса или обращение к нему пользователя/программы? если таковое произошло, свернуть экран и вывести сообщение.
спасибо.
Автор: folta
Дата сообщения: 06.08.2012 22:26
так, только не смеяться)
есть скрипт, который запускает первую программу, ждет пока пользователь нажмет на одну из двух кнопок и после этого запускается вторая программа(эта остается в фоне, так надо).
для очередности, пользую это:
WaitForProcess переменная, 0
но ставлю "0", вторая не стартует, другие цифры, на первое окно выпрыгивает очень быстро вторая программа.
штоб их порвало!
что там выставить или где скачать хороший мануал по этим WaitForProcess, с телефона много не начитаешь.

Страницы: 12345678910111213141516171819202122232425

Предыдущая тема: Помогите новичку в C++


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.