set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "calc"
WshShell.SendKeys("%( )")
WshShell.SendKeys("n")
--------------------------------
Исходя из твоих пояснений, я думаю что тебе не обойтись без имени окна. Для того чтобы произвести какие либо действия над окном вначале нужно его выбрать. Если ты запустишь батч то естественно курсор уже не будет в необходимим окне.
Некоторые command line utilities которые работают с окнами:
/CAXLIST — list all running copies of Comandiux with their command lines
/WNC — Close window (class name or "-") {window name or "-"} or use #000234 (#$004ab for hexa) as window hadle number, window name as "-" must be in this case
/WNT — Destroy window (class name or "-") {window name or "-"} or number #...
/WNH — Hide window ...
/WNS — Show window ...
/WND — Disable window ...
/WNE — Enable window ...
/WNM — Minimize window ...
/WNX — Maximize window ...
/WNR — Restore window ...
/WNN — Show window normal ...
/WNZT — Set window topmost (stay on top) ...
/WNZN — Set window not topmost ...
/WNZA — Activate window (bring to front, set focus) ...
Кстати, я забыл, что в Windows 3.11 была программа (имя не помню, но что-то вроде recorder), которая позволяла записать в .rec файл любую последовательность команд, которые вводились с клавиатуры и мышки, а затем стартовать этот .rec файл и машина повторяла всю последовательность команд. Неудобство было в том, что траектория перемещения мышки по экрану тоже записывалась, поэтому .rec файл файл получался длиноватый. В Windows 95 эту программу исключили. Нельзя ли ту программу запустить в XP Pro?
Кстати, я забыл, что в Windows 3.11 была программа (имя не помню, но что-то вроде recorder), которая позволяла записать в .rec файл любую последовательность команд, которые вводились с клавиатеры и мышки, а затем стартовать этот .rec файл и машина повторяла всю последовательность команд. Неудобство было в том, что траектория перемещения мышки по экрану тоже записывалась, поэтому .rec файл файл получался длиноватый. В Windows 95 эту программу исключили. Нельзя ли ту программу запустить в XP Pro?
Повозился я с обоими утилитами, прочитал документацию, описания функций, разобрался с синтаксисом, посмотрел примеры. Спасибо, конечно, за подсказку, но это не то, что мне нужно. В предлагаемых утилитах для создания скриптов и их последующего запуска, необходимо на каждой машине установить предлагаемые программы, а не использовать стандартные программы, или хотя бы модули Windows.
Повозился я с обоими утилитами, прочитал документацию, описания функций, разобрался с синтаксисом, посмотрел примеры. Спасибо, конечно, за подсказку, но это не то, что мне нужно. В предлагаемых утилитах для создания скриптов и их последующего запуска, необходимо на каждой машине установить предлагаемые программы, а не использовать стандартные программы Windows.
потребуется написание отдельной программы-монитора вызываемой из батч-файла
монитор должен будет получить имя окна для отслеживания и подписаться на приходящие к этому окну сообщения WM_MESSAGE типа WM_CLOSE, WM_MAXIMIZE итд
фишка в том что чтобы вернуть результат в батч файл монитору прийдётся закончить работу и передать код результата через %errorlevel%, а для проверки следующего нажатия батч-файл должен будет запустить монитор ещё раз ... короче такие фишки обычно через батч-файлы не делаются
Спасибо за ответ. Я думаю, что для мониторинга можно использовать универсальные программы-мониторы типа FileMon, RegMon и др. Сложность вопроса заключается в поиске имени процесса (имени окна) для/от которого нужно отслеживать сообшения.
Я попробовал FileMon и RegMon. Интересующую меня программу Р запускает explorer.exe. Она загружается в память и получает окно — эти сообщения приходят от программ explorer.exe, MsMpEng.exe, csrss.exe, vsmon.exe, svchost.exe и самой программы Р. Они регистрируются в FileMon и RegMon как Request'ы (OPEN, QUERY, CLOSE ...). Иное дело при клике указанных на картинке кнопок: окно изменяется, но мониторы сообщений для/от программы Р не регистрируют, т.е. сообщения о нажатиях не касаются программы Р.
Выявить активный процесс с указанными кнопками затруднительно — это лавина сообщений и нужно хорошо предварительно отфильтровать побочные процессы из списка подозреваемых для выявления этого активного. Ещё попробую поискать Request'ы типа WM_CLOSE, WM_MAXIMIZE, WM_MINIMIZE.
Спасибо за ответ. Я думаю, что для мониторинга можно использовать универсальные программы-мониторы типа FileMon, RegMon и др. Сложность вопроса заключается в поиске имени процесса (имени окна) для/от которого нужно отслеживать сообшения.
Я попробовал FileMon и RegMon. Интересующую меня программу Р запускает explorer.exe. Она загружается в память и получает окно — эти сообщения приходят от программ explorer.exe, MsMpEng.exe, csrss.exe, vsmon.exe, svchost.exe и самой программы Р. Они регистрируются в FileMon и RegMon как Request'ы (OPEN, QUERY, CLOSE ...). Иное дело при клике указанных на картинке кнопок: окно изменяется, но мониторы сообщений для/от программы Р не регистрируют, т.е. сообщения о нажатиях не касаются программы Р.
Выявить активный процесс с указанными кнопками затруднительно — это лавина сообщений и нужно хорошо предварительно отфильтровать побочные процессы из списка подозреваемых для выявления этого активного. Request'ы типа WM_CLOSE, WM_MAXIMIZE, WM_MINIMIZE я не видел, но обнаружил, что при игре с указанными кнопками вызывается файл C:\WINDOWS\system32\Msimtf.dll. Попробую отловить коды соответствующих сообщений.
Спасибо за ответ. Я думаю, что для мониторинга можно использовать универсальные программы-мониторы типа FileMon, RegMon и др. Сложность вопроса заключается в поиске имени процесса (имени окна) для/от которого нужно отслеживать сообщения.
Я попробовал FileMon и RegMon. Интересующую меня программу Р запускает explorer.exe. Она загружается в память и получает окно — эти сообщения приходят от программ explorer.exe, MsMpEng.exe, csrss.exe, vsmon.exe, svchost.exe и самой программы Р. Они регистрируются в FileMon и RegMon как Request'ы (OPEN, QUERY, CLOSE ...). Выявить активный процесс с указанными кнопками оказалось затруднительно — это лавина сообщений и нужно хорошо предварительно отфильтровать побочные процессы из списка подозреваемых для выявления этого активного. Request'ы типа WM_CLOSE, WM_MAXIMIZE, WM_MINIMIZE я не видел, но обнаружил, что при игре с указанными кнопками вызывается файл C:\WINDOWS\system32\Msimtf.dll. Попробую отловить коды соответствующих сообщений.
Комментарии
Так это можно сделать в windows vbscript:
1). Активируем окно.
2). Симулируем последовательное нажатие клавиш
ALT+SPACE
Потом одну из R, M, S, N, X, ALT+F4
Например Минимизировать Калькулятор:
cscript //nologo mincalc.vbs
----- mincalc.vbs --------------
Dim WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "calc"
WshShell.SendKeys("%( )")
WshShell.SendKeys("n")
--------------------------------
Исходя из твоих пояснений, я думаю что тебе не обойтись без имени окна. Для того чтобы произвести какие либо действия над окном вначале нужно его выбрать. Если ты запустишь батч то естественно курсор уже не будет в необходимим окне.
Некоторые command line utilities которые работают с окнами:
www. NirSoft.com
nircmd.exe
Examples:
win close title "calculator"
win hide stitle "calculat"
win hide ititle "culat"
win show class "SciCalc"
win activate title "my computer"
win max handle 0x00009c01
commandline.co.uk
CMDOW window {[/ACT] [/INA] [/ENA] [/DIS] [/VIS] [/HID] [/MIN] [/MAX] [/RES] [/TOP] [/NOT] [/REN caption] [/MOV left top] [/SIZ width height] [/CLS] [/END]}
Правда Симантек видит эту програмку как вирус :(
comandiux.scot.sk
Cax.exe /winclose *notepad
/CAXLIST — list all running copies of Comandiux with their command lines
/WNC — Close window (class name or "-") {window name or "-"} or use #000234 (#$004ab for hexa) as window hadle number, window name as "-" must be in this case
/WNT — Destroy window (class name or "-") {window name or "-"} or number #...
/WNH — Hide window ...
/WNS — Show window ...
/WND — Disable window ...
/WNE — Enable window ...
/WNM — Minimize window ...
/WNX — Maximize window ...
/WNR — Restore window ...
/WNN — Show window normal ...
/WNZT — Set window topmost (stay on top) ...
/WNZN — Set window not topmost ...
/WNZA — Activate window (bring to front, set focus) ...
/WNZB — Send window to back (bottom) ...
/WINLIST
/WINLISTA
/WINPRIO1-6
/WINTRANSP
/WINTRCL
/WINCLOSE
/WINDESTROY
/CLASSPRIO1-6
/CLASSTRANSP
/CLASSTRCL
/CLASSCLOSE
/CLASSDESTROY
/WINMSGSEND
/WINMSGPOST
/CLASSMSGSEND
/CLASSMSGPOST
Програмки не требуют установки.
Чтобы увидеть возможные опции выбери окно потом нажми ALT+SPACE.
Нажатие кнопки 2 (Restore) возможно только если окно максимизировано
Для Notepad:
---------------------------------------------------
Dim WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Untitled — Notepad"
'minimize
WshShell.SendKeys("%( )")
WshShell.SendKeys("n")
WScript.Sleep 2000
'maximize
WshShell.AppActivate "Untitled — Notepad"
WshShell.SendKeys("%( )")
WshShell.SendKeys("x")
WScript.Sleep 2000
'restore
WshShell.AppActivate "Untitled — Notepad"
WshShell.SendKeys("%( )")
WshShell.SendKeys("r")
---------------------------------------------------
создает ехе которые будут работать на любых машинах
Тогда нужно смотреть в сторону nnCron или AutoIt.
..
потребуется написание отдельной программы-монитора вызываемой из батч-файла
монитор должен будет получить имя окна для отслеживания и подписаться на приходящие к этому окну сообщения WM_MESSAGE типа WM_CLOSE, WM_MAXIMIZE итд
фишка в том что чтобы вернуть результат в батч файл монитору прийдётся закончить работу и передать код результата через %errorlevel%, а для проверки следующего нажатия батч-файл должен будет запустить монитор ещё раз ... короче такие фишки обычно через батч-файлы не делаются
Я попробовал FileMon и RegMon. Интересующую меня программу Р запускает explorer.exe. Она загружается в память и получает окно — эти сообщения приходят от программ explorer.exe, MsMpEng.exe, csrss.exe, vsmon.exe, svchost.exe и самой программы Р. Они регистрируются в FileMon и RegMon как Request'ы (OPEN, QUERY, CLOSE ...). Иное дело при клике указанных на картинке кнопок: окно изменяется, но мониторы сообщений для/от программы Р не регистрируют, т.е. сообщения о нажатиях не касаются программы Р.
Выявить активный процесс с указанными кнопками затруднительно — это лавина сообщений и нужно хорошо предварительно отфильтровать побочные процессы из списка подозреваемых для выявления этого активного. Ещё попробую поискать Request'ы типа WM_CLOSE, WM_MAXIMIZE, WM_MINIMIZE.
Я попробовал FileMon и RegMon. Интересующую меня программу Р запускает explorer.exe. Она загружается в память и получает окно — эти сообщения приходят от программ explorer.exe, MsMpEng.exe, csrss.exe, vsmon.exe, svchost.exe и самой программы Р. Они регистрируются в FileMon и RegMon как Request'ы (OPEN, QUERY, CLOSE ...). Иное дело при клике указанных на картинке кнопок: окно изменяется, но мониторы сообщений для/от программы Р не регистрируют, т.е. сообщения о нажатиях не касаются программы Р.
Выявить активный процесс с указанными кнопками затруднительно — это лавина сообщений и нужно хорошо предварительно отфильтровать побочные процессы из списка подозреваемых для выявления этого активного. Request'ы типа WM_CLOSE, WM_MAXIMIZE, WM_MINIMIZE я не видел, но обнаружил, что при игре с указанными кнопками вызывается файл C:\WINDOWS\system32\Msimtf.dll. Попробую отловить коды соответствующих сообщений.
Я попробовал FileMon и RegMon. Интересующую меня программу Р запускает explorer.exe. Она загружается в память и получает окно — эти сообщения приходят от программ explorer.exe, MsMpEng.exe, csrss.exe, vsmon.exe, svchost.exe и самой программы Р. Они регистрируются в FileMon и RegMon как Request'ы (OPEN, QUERY, CLOSE ...). Выявить активный процесс с указанными кнопками оказалось затруднительно — это лавина сообщений и нужно хорошо предварительно отфильтровать побочные процессы из списка подозреваемых для выявления этого активного. Request'ы типа WM_CLOSE, WM_MAXIMIZE, WM_MINIMIZE я не видел, но обнаружил, что при игре с указанными кнопками вызывается файл C:\WINDOWS\system32\Msimtf.dll. Попробую отловить коды соответствующих сообщений.