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

» Программирование "удобняшек" на VBScript

Автор: bomzzz
Дата сообщения: 30.09.2010 22:12
ну может я чета пропустил, эту таблицу я сам написькал
Автор: ComradG
Дата сообщения: 30.09.2010 22:12

Цитата:
1048576 - арабское окно еще для слева направо

А симитские окна то зачем?

Добавлено:

Цитата:
ну может я чета пропустил, эту таблицу я сам написькал

до тебя ее мелкософт отписюнявил в одном из своих доков
Автор: bomzzz
Дата сообщения: 30.09.2010 22:14
для полноты информации. вот чета так и не нашел как справку обрабатывать. не наешь?
Автор: ComradG
Дата сообщения: 30.09.2010 22:17

Цитата:
не наешь?

эээээ, ты это мне? если меня, то поясни
Цитата:
вот чета так и не нашел как справку обрабатывать.
Автор: bomzzz
Дата сообщения: 30.09.2010 22:18
ну как в вбс скрипте обрабатывать событие - нажатие кнопки справка
Автор: ComradG
Дата сообщения: 30.09.2010 22:20

Цитата:
ну как в вбс скрипте обрабатывать событие - нажатие кнопки справка

если просто событие, то Click (да это ты и сам знаешь) или чего? нажав пимпу должна справка вызываться?
Автор: bomzzz
Дата сообщения: 30.09.2010 22:22
ну чтоб при нажатии кнопки справка справка открывалась
Автор: ComradG
Дата сообщения: 30.09.2010 22:34

Цитата:
ну чтоб при нажатии кнопки справка справка открывалась

На скидку как-то так:
Код: Set objShell = CreateObject("WScript.Shell")
strHelp="%systemroot%\Help\ntcmds.chm"
<кнопка>.Click = objShell.Run strHelp, 0, False
Автор: ComradG
Дата сообщения: 01.10.2010 14:34
Сказать по-правде, интересно было разрулить на vbs'ках тему открытия файлов. С другой стороны это более напоминает извращение в стиле "а я умею вот так". Но на всяк товар есть свой купец (или чего там можно подобрать в рифму?) Итак, вот как я решил задачку открытия файла (необходимое подправлять самому):
Код: 'Объявляем константы диалогового окна
Const wshYes = 6
Const wshNo = 7
Const wshYesNoDialog = 4
Const wshQuestionMark = 32

'Создаем экземпляры объектов, которыми будем
'оперировать
Set objShell = CreateObject("WScript.Shell")
Set objDialog = CreateObject("UserAccounts.CommonDialog")

'Настраиваем диалоговые окна на вкус и цвет
intResult = objShell.Popup("Открыть файл справки или чего?", _
10, "Жду приказаний", wshYesNoDialog + wshQuestionMark)
objDialog.Filter = "Скомпилированный HTML-файл правки|*.chm"
objDialog.InitialDir = "%systemroot%\Help"
intOpen = objDialog.ShowOpen

'Вешаем обработчики на пимпы основного...
If intResult = wshYes Then
'и дочернего окна(окно открытия файла справки)
If intOpen = 1 Then
'Если оперейшн прошел куцо, значит все ОК
WScript.Echo objDialog.FileName
Else
'иначе захлопываем дочернее окно
WScript.Quit
End If
Else
WScript.Quit
End If
Автор: ComradG
Дата сообщения: 10.10.2010 23:24
ADGJMPTW009

Код: strFldr = WScript.Arguments.Item(0)
intDays = Int(WScript.Arguments.Item(1))

Set fso = CreateObject("Scripting.FileSystemObject")
DelOld strFldr, intDays

Function DelOld(sFldr, iDays)
Dim dir, fls, sbf, itm

Set dir = fso.GetFolder(sFldr)
Set fls = dir.Files
Set sbf = dir.SubFolders

For Each itm In fls
If DateDiff("d", itm.DateLastModified, Now) > iDays Then
WScript.Echo itm.Path
itm.Attributes = 0
itm.Delete
End If
Next

For Each itm In sbf
DelOld itm.Path, iDays
If itm.Size = 0 Then
itm.Attributes = 0
itm.Delete
End If
Next
End Function
Автор: AMuHb
Дата сообщения: 11.10.2010 09:13
Подсобите с циклом на вбс

необходимо оптимизировать скрипт (телнетилка)

set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
WScript.Sleep 100
WshShell.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 100
WshShell.SendKeys "telnet 192.168.1.1{ENTER}" (тут заместо ИП нужна переменная)
WScript.Sleep 4200
WshShell.SendKeys "exit{ENTER}"

необходимо чтоб скрипт в цикле обходил нужные ИП (заданные руками в массиве) 192.168.1.1, 192.168.1.2,192.168.1.3, итд
Автор: smirnvlad
Дата сообщения: 11.10.2010 12:10
AMuHb

Код: [no]
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
WScript.Sleep 100
WshShell.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 100

ips=Array("192.168.1.1", "192.168.1.2")

for each ip in ips
WshShell.SendKeys "telnet " & ip & "{ENTER}"
WScript.Sleep 4200
WshShell.SendKeys "exit{ENTER}"
WScript.Sleep 1000
next
[/no]
Автор: AMuHb
Дата сообщения: 11.10.2010 12:45
2 smirnvlad Благодарю!
Автор: as lan112233
Дата сообщения: 17.10.2010 16:33
Добрый день. кто бы смог написать скрип который при удачном пинге выполнял бы определенную команду, как только комп перестает быть доступен(выключается) выполняется другая программа. В сети два комп, главный и ноут. На главном периодически запускается торрент который отъедает весь канал. В наличии есть скрипт который следит за определенный процессом( в данном случае это опера) и как только этот процесс найдет выполняется команда для снижения скорости. Как только выключается опера выполняется другая команда для восстановления. Можно ли в этот скрипт дописать строки чтоб кроме как слежения за процессом было слежением и за доступностью сетевого комп. Вот содержимое скрипта.


Код: 'Версия 1.5 (Final)
'Настройки'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Const InstallPath = "C:\Program Files\uTorrent\" ' - путь к папке, где лежит "utspeed.exe" [Str]
Public Const MonitorProcess = "opera.exe" ' - название отслеживаемого процесса [Str]
Public Const Mode = 0 ' - режимы: 0 - лимиты, 1 - расписание, 2 - ipfilter [0/1/2]
Public Const FileNameOn = "UT Limiter [on].vbs" ' - имя файла при включенном скрипте [Str]
Public Const FileNameOff = "UT Limiter [off].vbs" ' - имя файла при выключенном скрипте [Str]
Public Const DownloadDefault = 60 ' - нормальная скорость скачки [кб/c]
Public Const UploadDefault = 60 ' - нормальная скорость отдачи [кб/c]
Public Const DownloadLimit = 5 ' - ограничение скорости скачки при обнаруж. процесса [кб/c]
Public Const UploadLimit = 20 ' - ограничение скорости отдачи при обнаруж. процесса [кб/c]
Public Const IdleTime = 15 ' - время простоя до частичного восстановл. скорости [сек.]
Public Const IdleDownSpeed = 50 ' - скорость скачки во время простоя [кб/c]
Public Const IdleUpSpeed = 50 ' - скорость отдачи во время простоя [кб/c]
Public Const AwayTime = 50 ' - время отсутствия до полного восстановл. скорости [сек.]
Public Const AwayDownSpeed = 50 ' - скорость скачки во время отсутствия [кб/c]
Public Const AwayUpSpeed = 50 ' - скорость отдачи во время отсутствия [кб/c]

'Инициализация'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

IsLimited = 2

Set objShell = CreateObject("Shell.Application")
Set Fso = CreateObject("Scripting.FileSystemObject")
Set f = Fso.GetFile(Wscript.ScriptFullName)
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")

If Fso.FileExists(InstallPath & "utspeed.exe") = false then
Msgbox "Сначала укажите путь к папке! ", vbInformation + vbOKOnly, "UT Limiter"
ExitScript
End if

If f.Name = FileNameOn then
ExitScript
else
f.Name = FileNameOn
End if

'Мониторинг''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Do

If oAutoIt.ProcessExists(MonitorProcess) then
IsLimited = SetLimitsTrue(IsLimited)
else
IsLimited = SetLimitsFalse(IsLimited)
End if

If Fso.FileExists(FileNameOn) = false then
IsLimited = SetLimitsFalse(IsLimited)
ExitScript
End if

PrevMpos = 0

Do while oAutoIt.ProcessExists(MonitorProcess) and oAutoIt.ProcessExists("utorrent.exe")

If Fso.FileExists(FileNameOn) = false then
IsLimited = SetLimitsFalse(IsLimited)
ExitScript
End if

CurMpos = oAutoIt.MouseGetPosX
StartTime = Timer
Do while CurMpos = PrevMpos
If Timer - StartTime > IdleTime then
IsLimited = SetIdleLimits(IsLimited)
End if
If Timer - StartTime > AwayTime then
IsLimited = SetAwayLimits(IsLimited)
End if
Wscript.Sleep 200
CurMpos = oAutoIt.MouseGetPosX
Loop
If IsLimited = 3 or IsLimited = 4 then
IsLimited = SetLimitsTrue(IsLimited)
End if
PrevMpos = CurMpos
Wscript.Sleep 500
Loop

Wscript.Sleep 500
Loop

'Функции'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function SetLimitsTrue (IsLimited)
If IsLimited <> 1 and Mode = 0 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/max_dl_rate " & DownloadLimit & " /max_ul_rate " & UploadLimit, InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 1
End if
If IsLimited <> 1 and Mode = 1 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/sched_enable 1", InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 1
End if
If IsLimited <> 1 and Mode = 2 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/ipfilter.enable 1", InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 1
End if
SetLimitsTrue = IsLimited
End Function

Function SetLimitsFalse (IsLimited)
If IsLimited <> 0 and Mode = 0 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/max_dl_rate " & DownloadDefault & " /max_ul_rate " & UploadDefault, InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 0
End if
If IsLimited <> 0 and Mode = 1 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/sched_enable 0", InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 0
End if
If IsLimited <> 0 and Mode = 2 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/ipfilter.enable 0", InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 0
End if
SetLimitsFalse = IsLimited
End Function

Function SetIdleLimits (IsLimited)
If IsLimited <> 3 and IsLimited <> 4 and Mode = 0 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/max_dl_rate " & IdleDownSpeed & " /max_ul_rate " & IdleUpSpeed, InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 3
End if
SetIdleLimits = IsLimited
End Function

Function SetAwayLimits (IsLimited)
If IsLimited <> 4 and Mode = 0 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/max_dl_rate " & AwayDownSpeed & " /max_ul_rate " & AwayUpSpeed, InstallPath
oAutoIt.ProcessWaitClose "utspeed.exe"
IsLimited = 4
End if
If IsLimited <> 4 and Mode = 1 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/sched_enable 0", InstallPath
IsLimited = 4
End if
If IsLimited <> 4 and Mode = 2 and oAutoIt.ProcessExists("utorrent.exe") then
objShell.ShellExecute "utspeed.exe", "/ipfilter.enable 0", InstallPath
IsLimited = 4
End if
SetAwayLimits = IsLimited
End Function

Function ExitScript
on error resume next
f.Name = FileNameOff
Wscript.Quit
End Function
Автор: king_stiven
Дата сообщения: 17.10.2010 18:51
Есть .js скрипт запускающий блокнот в скрытом виде

Код: var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Run("notepad",0);
Автор: smirnvlad
Дата сообщения: 17.10.2010 20:23
king_stiven
[more]
передает все параметры, но приходится все заключать в кавычки

Код: [no]
fn = "1 1 2.bat"

u = new Array();
for (var i=0; i<WScript.Arguments.Count(); i++) u[u.length] = WScript.Arguments.Item(i);
p = "\"" + u.join("\" \"") + "\"";

var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Run("\"" + fn + "\" " + p ,0);
[/no]
Автор: Mushroomer
Дата сообщения: 18.10.2010 06:37
Просьба посмотреть скрипт [more]
strComputer = "."
BuferFile = "c:\bufer.txt"
Count = 0
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService. _
ExecQuery("Select * from CIM_DataFile where (Extension = 'lsp') or (Extension = 'mnl')")
For Each objFile in colFiles
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oLogFile= oFSO.OpenTextFile(objFile.Name)
Set BufFile= oFSO.CreateTextFile(BuferFile,true)
sLogLine=""
While (Not (oLogFile.AtEndOfStream))and(sLogLine<>"(setq flagx t)")
sLogLine = oLogFile.ReadLine
if sLogLine<>"(setq flagx t)" Then
BufFile.WriteLine sLogLine
end if
Wend
oLogFile.Close
BufFile.Close
If sLogLine="(setq flagx t)" Then
oFSO.DeleteFile(objFile.Name)
oFSO.CopyFile BuferFile,objFile.Name,True
Count=Count+1
End if
oFSO.DeleteFile(BuferFile)
Next

Set colFiles = objWMIService. _
ExecQuery("Select * from CIM_DataFile where (Extension = 'mnr') or (Extension = 'mnc') or (Extension = 'mns')")
For Each objFile in colFiles
Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.DeleteFile(objFile.Name)
Next

Set colFiles = objWMIService. _
ExecQuery("Select * from CIM_DataFile where (Extension = 'lsp') or (Extension = 'mnl')")
For Each objFile in colFiles
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oLogFile= oFSO.OpenTextFile(objFile.Name)
Set BufFile= oFSO.CreateTextFile(BuferFile,true)
sLogLine=""
While (Not (oLogFile.AtEndOfStream))and(sLogLine<>"(setq flagx t)")
sLogLine = oLogFile.ReadLine
if sLogLine<>"(setq flagx t)" Then
BufFile.WriteLine sLogLine
end if
Wend
oLogFile.Close
BufFile.Close
If sLogLine="(setq flagx t)" Then
oFSO.DeleteFile(objFile.Name)
oFSO.CopyFile BuferFile,objFile.Name,True
Count=Count+1
End if
oFSO.DeleteFile(BuferFile)
Next


'If Count>0 Then
WScript.Echo "?ылечено " & Count & " файлов"
'End If[/more]

Скрипт взят из сообщения http://forum.dwg.ru/showpost.php?p=326749&postcount=30
и борется протиив вируса в AutoCAD.
Проблема: в Windows 7 32 бит выдает ошибку: неверный символ или аргумент (пишу по памяти) в строке 17, позиция 8.
Автор: as lan112233
Дата сообщения: 18.10.2010 16:17
И еще такой вопрос. Немного нубское построение будет, но попытаюсь объяснить как могу.
Допустим скрипт при выполнении должен сравнить два случая. (в итоге даст "правда" или "ложь"). Только могут быть случаи когда одно сравнение даст нам "правда" а другое "ложь" и наоборот. Так вот, как сделать так чтоб было следующим образом правда*правда=правда, ложь*правда=правда, правда*ложь=правда, ложь*ложь=ложь. Просто решил переделать скрипт и столкнулся с такой проблемой

Вопрос снят!
Автор: sLap
Дата сообщения: 19.10.2010 11:06
Нихао!
И вот назрела необходимость в неком vbs-скрипте...

1. Открывается форма с возможностью выбора юзернэйма из списка всех существующих на компе профилей (откуда будет правильнее брать - хз, предполагаю что из названий папок в documents and settings или же из [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList], но самих юзернэймов там нет)
Если ничего не получится оставляем ручной ввод.

2. Дадее выбранный (введеный) юзернэйм пишется сюда:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"DefaultUserName"="Pupkin"

3. СЧАСТЬЕ! все танцуют и йодлят!
Автор: KillaJ
Дата сообщения: 26.10.2010 10:26
Добрый день!Мне нужен скрипт, чтобы копировал все файлы с заданным разрешением в другую папку.Подскажите пож-та!!

Вот скрипт, который работает(копирует данные на рабочем столе).Если я меняю в path_source "Desktop" на "C:\Folder1", а path_dest "Desktop" на "C:\Folder2" то пишет ошибку.



Код: set fso = createobject("Scripting.FileSystemObject")
set shell = WScript.CreateObject("WScript.Shell")
path_source = shell.specialfolders("Desktop")
path_dest = shell.specialfolders("Desktop") & "\RADIO"
ext = "m3u"
if not fso.folderexists(path_dest) then fso.createfolder(path_dest)
for each file in fso.getfolder(path_source).files
if fso.getextensionname(file) = ext then fso.copyfile file, path_dest & "\" & fso.getfilename(file)
next
Автор: smirnvlad
Дата сообщения: 26.10.2010 11:44
KillaJ
менять надо не только "Desktop", а всю строку
path_source = "C:\Folder1"
path_dest = "C:\Folder2" & "\RADIO"
Автор: KillaJ
Дата сообщения: 27.10.2010 15:48
Спасибо smirnvlad!!!
Автор: Wu Tang
Дата сообщения: 27.10.2010 18:50
Подскажите, где ошибка?

Код: On Error Resume Next

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

WinRar = WshShell.ExpandEnvironmentStrings("%ProgramFiles%\Winrar")

WshShell.CurrentDirectory = WinRar

WshShell.Run "start /min winrar.exe", 0

Wscript.Sleep 2000 'в мс.

WshShell.Run "taskkill /f /im winrar.exe", 0
Автор: smirnvlad
Дата сообщения: 27.10.2010 19:02
Wu Tang

Цитата:
Подскажите, где ошибка?


Цитата:
WshShell.Run "start /min winrar.exe", 0


Код:
cmd = WshShell.ExpandEnvironmentStrings("%ComSpec%")
WshShell.Run cmd & " /c start /min winrar.exe", 0
Автор: Wu Tang
Дата сообщения: 27.10.2010 20:38
smirnvlad
Запускается не свернутым:

Код: On Error Resume Next

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

cmd = WshShell.ExpandEnvironmentStrings("%ComSpec%")

WshShell.Run cmd & " /c start /min winrar.exe", 0

Wscript.Sleep 2000 'в мс.

WshShell.Run "taskkill /f /im winrar.exe", 0
Автор: smirnvlad
Дата сообщения: 27.10.2010 21:08
Wu Tang
можно попробовать
WshShell.Run "winrar.exe", 2
или
WshShell.Run "winrar.exe", 7
но второй winrar всегда запускается не свернутым, видимо особенность winrar
Автор: Wu Tang
Дата сообщения: 27.10.2010 21:58
smirnvlad
Попробовал другой способ - запускать cmd из под vbs, тогда и консоль не мелькает...
Автор: UR3LPP
Дата сообщения: 27.10.2010 23:48
Всем привет!
Столкнулся с такой проблемой. Нужен скрипт для такой задачи.
Есть корпоративная сеть. Есть сервер в офисе и другие структурные подразделения в других городах района. так вот: при запуске скрипта в структурном подразделении, нужно с сервера \\server\folder скачать все файлы в папку \\computer\folder. При этом нужно сравнить содержимое скачиваемого файла ENTERP.ini(в каждой строчке отдельный клиент - новые клиенты появляются в конце файла) c тем, который уже есть на компьютере в папке \\computer\folder и в окне вывести список новых клиентов и при нажатии на кнопку ОК зайти в определённую программу. А если обновлений нет, то ты вести окно, что обновлений не обнаружено.

Сам в скриптах не силён (начал только изучать), а скриптик очень сильно нужен.

Заранее всем благодарю!
Автор: WolfyCub
Дата сообщения: 29.10.2010 11:46
есть задача : с помощью скрипта считать текущего пользователя (в основном група "user") в winxp и в его правах убрать галки "запретить смену пароля" и "срок действия пароля неограничен" и поставить галку "Потребовать смену пароля ...." видел похожие решения типа :

Set usr = GetObject("WinNT://./TEST,user")
usr.PasswordExpired = 1
usr.SetInfo

но в этом случае явно указан пользователь и прежде снять нуна галки , что бы поставить "Потребовать смену пароля" ....

помогите плизззз ^_^
Автор: KillaJ
Дата сообщения: 30.10.2010 13:58
Добрый день еще раз! Я хочю сделать так, чтобы в папке из которой копирую файлы, брать дату создания файла и переносить в созданную папку имя которой дата создания файла в формате YYYYMMDD.Подскажите пож-та!


Это исходный код.

Код: set fso = createobject("Scripting.FileSystemObject")
set shell = WScript.CreateObject("WScript.Shell")
path_source = shell.specialfolders("Desktop")
path_dest = shell.specialfolders("Desktop") & "\RADIO"
ext = "m3u"
if not fso.folderexists(path_dest) then fso.createfolder(path_dest)
for each file in fso.getfolder(path_source).files
if fso.getextensionname(file) = ext then fso.copyfile file, path_dest & "\" & fso.getfilename(file)
next

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


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