Здравствуйте, Domnitch, Вы писали:
D>Здравствуйте, PA, Вы писали:
PA>>Можно консольку запускать не через exec, а через run — там есть параметр, позволяющий скрыть окно. PA>>А stdout и stderr при этом перенаправить во временные файлы через 1> и 2>
D>Да, это работает, но уж больно некрасиво; еще и временные файлы плодятся. D>А вот как бы до окна дотянуться? Ведь ProcessID уже в руках...
перечисляя все окна с помощью EnumChildWindows, найти hwnd окна, которое нужно скрыть.
во время перечисления необходимо смотреть на ProcessId с помощью функции GetWindowThreadProcessId
далее всё просто, устанавливай у окна флаг скрыть. здесь подробнее ссылка
vbscript: как скрыть окно процесса, зная его ProcessID ?
У меня задача — запустить некое консольное приложение, работающее несколько минут, и перехватить его вывод.
Примерно так:
Dim WshShell, oExec, cmd
' Some command string - does not matter
cmd = "find " + CHR(34) + "qwerty" + CHR(34) + " c:\windows\system32\x*.*"
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec(cmd)
Do While oExec.Status = 0
WScript.Sleep 100
Loop
WScript.Echo oExec.ExitCode
WSCript.echo oExec.StdOut.ReadAll
WSCript.echo oExec.StdErr.ReadAll
Проблема в том, что при этом открывается консольное окно, которое мне совершенно не нужно.
Легко получить oExec.ProcessID, но как средствами VBS найти соответствующее окно и скрыть его?
Заранее благодарен за помощь.
Re: vbscript: как скрыть окно процесса, зная его ProcessID ?
Здравствуйте, Domnitch, Вы писали:
D>У меня задача — запустить некое консольное приложение, работающее несколько минут, и перехватить его вывод.
Можно консольку запускать не через exec, а через run — там есть параметр, позволяющий скрыть окно.
А stdout и stderr при этом перенаправить во временные файлы через 1> и 2>
Re[2]: vbscript: как скрыть окно процесса, зная его ProcessID ?
Здравствуйте, PA, Вы писали:
PA>Можно консольку запускать не через exec, а через run — там есть параметр, позволяющий скрыть окно. PA>А stdout и stderr при этом перенаправить во временные файлы через 1> и 2>
Да, это работает, но уж больно некрасиво; еще и временные файлы плодятся.
А вот как бы до окна дотянуться? Ведь ProcessID уже в руках...
Re[4]: vbscript: как скрыть окно процесса, зная его ProcessID ?
Здравствуйте, Salih, Вы писали:
S>перечисляя все окна с помощью EnumChildWindows, найти hwnd окна, которое нужно скрыть. S>во время перечисления необходимо смотреть на ProcessId с помощью функции GetWindowThreadProcessId
Осталось еще рассказать каким образом из VBS скрипта можно получить доступ к WINAPI функциям.
По факту сделать такое без использования сторонних компонентов нельзя.
Если есть вариант зарегистрировать в системе сторонний ActiveX, то можно погуглить в сторону windowsystemobject или dynwrapx