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

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

Автор: Black_Lung
Дата сообщения: 07.08.2012 12:25
freedom83
в vbs никак, имхо

folta
WaitForProcess это не стандартное vbs, и мануала по нему скорее всего нет, нужно сам код сотреть.
Какие значения других цифер подбирались?



Мануал из шапке не работает, исправить нужно.
Автор: folta
Дата сообщения: 07.08.2012 12:40
Black_Lung
Function OnFirstParentStart
TPPath = ExpandPath("%ProgramFilesDir%\blabla...")
TP =ExecuteVirtualProcess(TPPath)
WaitForProcess TP, 0
End Function

ставил 6000, таки почти то. но это обыкновенная задержка.
за ней идет точно такая функция с запуском этой же программы, только OnLastProcessExit, ну, там все понятно.

это скрипт для ThinApp)
Автор: korggrodno
Дата сообщения: 13.08.2012 11:34
set WshShell = WScript.CreateObject("WScript.Shell")

Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
TC_folder = fso.OpenTextFile("_TC_folder.ini", ForReading).ReadLine
WshShell.run "runas /user:ramteks\sergey.h.adm ..\" + TC_folder + "\Totalcmd.exe"
WScript.Sleep 1000
WshShell.SendKeys "****"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1000

написал скрипт запуска TC на vbs .

На xp под пользователем и под админом он работает.
Независимо от того консольный или терминальный сеанс.

На win7 в консольном сеансе этот vbs скрипт не работает.
Независимо под администратором или под пользователем
А в терминальном сеансе этот скрипт одинаково хорошо работает
под пользователем и под администратором.

Если в консольном сеансе открыть cmd и стартовать tc с помощью runas в ручную то работает
то все прекрасно работает

Помогите исправить чтобы работало в консольном сеансе на windows 7
Автор: smaharbA
Дата сообщения: 15.08.2012 21:24
Black_Lung

msgbox (createobject("rcbdyctl.setting").GetIpAddress)


Добавлено:
Black_Lung

Цитата:
freedom83
в vbs никак, имхо


легко
Автор: Black_Lung
Дата сообщения: 16.08.2012 10:30
korggrodno
у меня работает и через cscript и через wscript, и так и через RDP

smaharbA

Цитата:
msgbox (createobject("rcbdyctl.setting").GetIpAddress)

к чему это?
Автор: red91
Дата сообщения: 25.08.2012 20:09
подскажите как авторизоваться на сайте в последней открытой вкладке

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "http://yandex.ru"
objIE.Navigate2 "http://yahoo.com", &h800
objIE.Navigate2 "http://mail.ru" , &h800
objIE.Visible = true
WScript.Sleep 2000
Set objForm = objIE.Document.forms(0)
objForm.elements("Login").value = "name"
objForm.elements("Domain").value = "mail.ru"
objForm.elements("Password").value = "pass"
objForm.submit()
objIE.Visible = True
Автор: smaharbA
Дата сообщения: 27.08.2012 21:22
set shell=CreateObject("Shell.Application")
for each x in shell.Windows()
on error resume next
msgbox (x.document.location)
on error goto 0
next


дальше расписывать, или будете разные объекты для слежки использовать ?
Автор: freedom83
Дата сообщения: 29.08.2012 10:39
smaharbA

Цитата:
легко


каким именно образом?

Добавлено:
в том числе и отследить появление необходимого процесса
Автор: DANGER RAIDER
Дата сообщения: 29.08.2012 15:02
Народ, помогите.

Посоветовали сюда обратиться.

Нужно выискивать в лог-файле определенные параметры (имя пользователя: например USER anton) и копировать эту и предыдущую строчку в новый файл (новый или ранее созданный с добавлением в конец документа.

Параметры меняются. желательно чтобы была возможность менять параметр и файл.

Может просто прога есть уже готовая какая то?
А то у меня за день в логе накапливается больше 1000 листов, физически не могу обработать.

Заранее спасибо.
Автор: boss911
Дата сообщения: 04.09.2012 03:18
[more=Решено]Здравствуйте. Есть не простая, как по мне задача. Батник запускает консольную утилиту, которая генерирует 4 цифры и просит их ввести:

Код: Type these four digits *1329* and press ~Enter~ =>СЮДА НАДО ВВОДИТЬ И ПОТОМ ЭНТЕР
Автор: go85
Дата сообщения: 07.09.2012 16:45
Не подскажете, а можно ли при работе скрипта узнать, нажата ли Ctrl (или другая служебная клавиша)?
Автор: boss911
Дата сообщения: 08.09.2012 04:22
Командная строка, батники, сценарии (bat, cmd)
Изначальный вопрос в посте #17.

Может тут знают ответ?
Автор: boss911
Дата сообщения: 11.09.2012 04:54
Удалено.
Автор: CHICOT
Дата сообщения: 21.09.2012 09:59
Я полный чайник поэтому прошу написать код от и до.
На компьютере я предпочитаю не видеть скрытые и системные папки и файлы. Но бывает какая-нибудь программа требует в диалоговом окне указать путь куда-нибудь в Appliacation data.Приходистя лезть в это время в свойства папки и отмечать/снимать галки (двумя регфайлами тоже пользоваться не очень-то удобно), что неудобно.Поэтому и просьба написать следующий сценарий:

1.Показать скрытое
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\Advanced]
"Hidden"=dword:00000001
"ShowSuperHidden"=dword:00000001
"WebViewBarricade"=dword:00000001
2.Обновить(типа F5)
по прошествии 15-20 секунд вернуть в исходное
3. Скрыть скрытое
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\Advanced]
"Hidden"=dword:00000002
"ShowSuperHidden"=dword:00000000
"WebViewBarricade"=dword:00000000
4.Обновить (типа F5)
Заранее спасибо.
Автор: TellMePls
Дата сообщения: 28.09.2012 00:40
Добрый день !

Проясните ситуацию пжста(для неспеца).
Почему при работе скрипта первая переменная получает значение False, а вторая True

ttt1 = WshShell.AppActivate("вниз")
ttt2 = WshShell.AppActivate("down")

Оба окна имеют место быть. Фокус на окно переводится в обоих случаях

????????
Спасибо.

Автор: Wendiogo
Дата сообщения: 28.09.2012 13:08
chel78

Цитата:
необходимо как то вставить паузу


Не знаю, актуален ли ответ, но делается это следующей строкой:
Application.Wait (TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 10))
10 - это количество секунд задержки при выполнении скрипта
Автор: kolonium
Дата сообщения: 28.09.2012 15:39
подскажите, как добавить строку в txt файл и открыть его (файл не имеет расширения),
если строка уже существует то пропустить её,
если отсутствует, добавить её и проверить следующую и т.д.

есть такие варианты, но их нужно объединить и допилить:

первый :
/////////
Option Explicit

Dim oData, filetxt

Set oData = CreateObject("Scripting.FileSystemObject")
Set filetxt = oData.OpenTextFile("logs", 8, True)
filetxt.WriteLine("1-я строка") & vbNewLine & "2-я строка"
filetxt.Close

Set oData = Nothing

и второй :
///////////
On Error Resume Next

sFile = "C:\log\logs"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")

If Not oFSO.FileExists(sFile) Then
    MsgBox "Файл не существует", 48, "Ошибка"
Else
    WshShell.Run "notepad.exe " & sFile
End If

ну или сочетать такой способ открытия файла:
///////////////////////////////////////////////////////
on error resume next

Set WshShell = Wscript.CreateObject("Wscript.Shell")
strcomputer     = inputbox("Enter file name","Get logs file","logs")

If strComputer = "" Then
WScript.Quit
End If

wshShell.run "%comspec% /c c: & assoc .=txtfile"
WScript.Sleep 500

wshShell.Run "\\" & strcomputer & "\c$\log"
Автор: TellMePls
Дата сообщения: 29.09.2012 00:34

Цитата:
Цитата:
необходимо как то вставить паузу

 
Не знаю, актуален ли ответ, но делается это следующей строкой:  
Application.Wait (TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 10))
10 - это количество секунд задержки при выполнении скрипта


Дак проще так
WScript.Sleep 500
цифра - время паузы в мс. 1000мс = 1с
Автор: Black_Lung
Дата сообщения: 01.10.2012 11:46
kolonium
проверит файл и добавит строки если их нет


Код:
str= array("строка1","строка2","строка3")
Set fso = CreateObject("Scripting.FileSystemObject")
Set fn = fso.OpenTextFile("111",1)

ftxt=fn.ReadAll
fn.close

for i=0 to ubound(str)
if instr(ftxt,str(i))=0 then ftxt=ftxt+chr(10)+str(i)
next
Set fn = fso.OpenTextFile("111",2)
fn.Write ftxt
fn.Close
Автор: Skif_off
Дата сообщения: 03.10.2012 12:28
comrades, помогите, пожалуйста, совсем не разбираюсь в vbs, к сожалению:
к foobar2000 прикрутил AuSpec (генерация и просмотр спектрограмм), заменил ACDSee на Imagine.

Код: Dim WshShell, FSO
Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

Call WshShell.Run("foobar2000.exe " & chr(34) & _
        "/runcmd-playlist=Convert/auspec" & chr(34), 1, True)

WshShell.Popup "Please press OK when converting is done",, "auSpec waiting for responce ...", 1

WshShell.CurrentDirectory = ".\tools\AuSpec\"
Call WshShell.Run("AuSpec_Pre.exe C:\temp\foo_temp\Image.wav", 1, True)
Call WshShell.Run("Imagine.exe C:\temp\foo_temp\Image.wav.png", 1, True)
FSO.GetFolder("C:\temp\foo_temp").Delete
Автор: Black_Lung
Дата сообщения: 03.10.2012 12:42

Цитата:
Как правильно передать путь с системной переменной?


ExpandEnvironmentStrings
Автор: Skif_off
Дата сообщения: 03.10.2012 13:54
Black_Lung, спасибо, погуглил, заменил
FSO.GetFolder("C:\temp\foo_temp").Delete
на
FSO.GetFolder("WshShell.ExpandEnvironmentStrings(%Temp%)" & "\foo_temp").Delete
получаю ту же ошибку - путь не найден. Что делаю не так?

Добавлено:
Кажется, разобрался, вот так:
FSO.GetFolder(WshShell.ExpandEnvironmentStrings("%TEMP%\foo_temp")).Delete
вроде работает.
Надеюсь, это первый и последний раз )
Автор: Black_Lung
Дата сообщения: 03.10.2012 15:23
FSO.GetFolder("WshShell.ExpandEnvironmentStrings(%Temp%)" & "\foo_temp").Delete будет искать "WshShell.ExpandEnvironmentStrings(%Temp%)\foo_temp"
надо так:
FSO.GetFolder(WshShell.ExpandEnvironmentStrings("%Temp%") & "\foo_temp").Delete
Автор: Skif_off
Дата сообщения: 03.10.2012 15:37
Black_Lung, спасибо, исправил.
Автор: Kar1son
Дата сообщения: 16.10.2012 10:44
подскажите почему это не работает (окно на мгновение появляется и пропадает)

Код: Set oShell = CreateObject("WScript.Shell")
oShell.Exec("c:\windows\system32\telnet.exe")
Автор: Black_Lung
Дата сообщения: 17.10.2012 11:25
Kar1son
Потому что первый пример с ошибкой, скобки ненадо было ставить. Если нужно ProcessID то нужно так:

Код: set oExec= oShell.Exec("c:\windows\system32\telnet.exe")

Автор: Kar1son
Дата сообщения: 17.10.2012 21:47
Black_Lung
так тоже не работает. оно не дает ошибку. просто пустое окошко с заголовком "c:\windows\system32\telnet.exe" появляется на мгновение и пропадает. пробовал на двух машинах(обе ХР)

Цитата:
set WshShell = WScript.CreateObject("WScript.Shell")
set oExec= WshShell.Exec("c:\windows\system32\telnet.exe")
Автор: Black_Lung
Дата сообщения: 18.10.2012 11:46
Таки да, дело не в скобках. Exec не показыает окно консоль


там написано как получить PID без exec
Автор: Kar1son
Дата сообщения: 18.10.2012 12:00
это глюк или так должно быть. вроде должен показать?
при этом он не просто не показывает. в процессах telnet не появляется
за ссылку спасибо, тот вариант мне подходит. но хотелось бы понять для себя и про Exec
Автор: Alukardd
Дата сообщения: 19.10.2012 12:24
Приветствую.

У нас с коллегой начинается тупняк. он на основе примеров создал vbs-скрипт, который при определённых условиях должен слать email. Делает он это через CDO.Message.
Тестим через gmail аккаунт — всё хорошо работает.
Проверяем через корпоративный почтовик — не пашет.

В чём суть, глянул логи smtp сервера (у нас настроен postfix с авторизацией через dovecot) — скрипт не авторизуется. Причём тупо даже не пытается, он сразу после приветствия сервера суёт ему "MAIL FROM", вместо "AUTH PLAIN". Все почтовые клиенты нормально работают с нашим почтовым сервером. В т.ч. попробовал отправить письмо через mailx (BSD утилита) и всё норм ушло. Сервер как и положено во всех SMTP-сессиях отдаёт 250-AUTH PLAIN.

В чём дело, кто может подсказать? Почему он у gmail авторизуется, а у нас даже не пытается?
Настройки для [more=gmail].Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user@gmail.com"
.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Passssssssss"
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
[/more] и для [more=внутреннего почтовика.] .Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user"
.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Passssssssss"
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.company.local"
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25[/more].

Страницы: 12345678910111213141516171819202122232425

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


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