Batch файлы

Чтобы отправить комментарий — войдите.
  • vodochnik
    21 янв 09
    ALT+SPACE дает выход на необходимое меню.

    Так это можно сделать в 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

    Програмки не требуют установки.
    Ответить
    • steves
      steves АВТОР
      vodochnik 22 янв 09
      Интересно. Как будет выглядеть код, который соответствует нажанию кнопки 2 на рисунке?
      Ответить
    • steves
      steves АВТОР
      vodochnik 22 янв 09
      Интересно. Как будет выглядеть код, который соответствует нажанию кнопки 2 на рисунке?
      Ответить
      • vodochnik
        Не все окна имеют maximize option. Calc.exe например нельзя максимизировать.

        Чтобы увидеть возможные опции выбери окно потом нажми 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")

        ---------------------------------------------------
        Ответить
  • steves
    steves АВТОР
    18 янв 09
    Кстати, я забыл, что в Windows 3.11 была программа (имя не помню, но что-то вроде recorder), которая позволяла записать в .rec файл любую последовательность команд, которые вводились с клавиатуры и мышки, а затем стартовать этот .rec файл и машина повторяла всю последовательность команд. Неудобство было в том, что траектория перемещения мышки по экрану тоже записывалась, поэтому .rec файл файл получался длиноватый. В Windows 95 эту программу исключили. Нельзя ли ту программу запустить в XP Pro?
    Ответить
  • steves
    steves АВТОР
    18 янв 09
    Кстати, я забыл, что в Windows 3.11 была программа (имя не помню, но что-то вроде recorder), которая позволяла записать в .rec файл любую последовательность команд, которые вводились с клавиатеры и мышки, а затем стартовать этот .rec файл и машина повторяла всю последовательность команд. Неудобство было в том, что траектория перемещения мышки по экрану тоже записывалась, поэтому .rec файл файл получался длиноватый. В Windows 95 эту программу исключили. Нельзя ли ту программу запустить в XP Pro?
    Ответить
  • L
    18 янв 09
    vTask Studio не совсем то но поверь лутьше чем то что тебе надо — делает все, возможности почти безгнаничны,

    создает ехе которые будут работать на любых машинах
    Ответить
    • steves
      steves АВТОР
      loader_77 18 янв 09
      $149, а что внутри, т.е. нужна ли инсталяция — не знаю. Если нужно инсталировать — не подходит.
      Ответить
  • klajnor
    16 янв 09
    Нужно сделать какой-нить скрипт который работал с окнами?

    Тогда нужно смотреть в сторону nnCron или AutoIt.
    Ответить
    • steves
      steves АВТОР
      klajnor 17 янв 09
      Повозился я с обоими утилитами, прочитал документацию, описания функций, разобрался с синтаксисом, посмотрел примеры. Спасибо, конечно, за подсказку, но это не то, что мне нужно. В предлагаемых утилитах для создания скриптов и их последующего запуска, необходимо на каждой машине установить предлагаемые программы, а не использовать стандартные программы, или хотя бы модули Windows.
      Ответить
    • steves
      steves АВТОР
      klajnor 17 янв 09
      Повозился я с обоими утилитами, прочитал документацию, описания функций, разобрался с синтаксисом, посмотрел примеры. Спасибо, конечно, за подсказку, но это не то, что мне нужно. В предлагаемых утилитах для создания скриптов и их последующего запуска, необходимо на каждой машине установить предлагаемые программы, а не использовать стандартные программы Windows.

      ..
      Ответить
  • S
    16 янв 09
    не таких ESC-кодов :(

    потребуется написание отдельной программы-монитора вызываемой из батч-файла

    монитор должен будет получить имя окна для отслеживания и подписаться на приходящие к этому окну сообщения WM_MESSAGE типа WM_CLOSE, WM_MAXIMIZE итд

    фишка в том что чтобы вернуть результат в батч файл монитору прийдётся закончить работу и передать код результата через %errorlevel%, а для проверки следующего нажатия батч-файл должен будет запустить монитор ещё раз ... короче такие фишки обычно через батч-файлы не делаются
    Ответить
    • steves
      steves АВТОР
      saperSG 16 янв 09
      Спасибо за ответ. Я думаю, что для мониторинга можно использовать универсальные программы-мониторы типа 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.
      Ответить
    • steves
      steves АВТОР
      saperSG 16 янв 09
      Спасибо за ответ. Я думаю, что для мониторинга можно использовать универсальные программы-мониторы типа 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. Попробую отловить коды соответствующих сообщений.
      Ответить
    • steves
      steves АВТОР
      saperSG 16 янв 09
      Спасибо за ответ. Я думаю, что для мониторинга можно использовать универсальные программы-мониторы типа 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. Попробую отловить коды соответствующих сообщений.
      Ответить
full image