1

Можно ли как-то полностью записать действие пользователя и воспроизвести его на любом другом компьютере? Не просто повторять пользовательский ввод (нажатие клавиш, щелчки / движения мыши), но и фиксировать реальные системные "объекты" (например, элементы GUI), находящиеся во взаимодействии с пользователем.

AutoIt/AutHotKey, кажется, не в состоянии захватить / повторить определенные действия. Например, я хочу включить / выключить адресную панель инструментов на панели задач через оболочку или программно, что обычно делается через контекстное меню на панели задач -> Панели инструментов -> Адрес.

С AutoIt вы можете имитировать точное движение / щелчки мыши или нажатие клавиш, что не подходит в этом случае, потому что произойдет сбой на некоторых других машинах (если панель инструментов автоматически скрыта или расположена сбоку). Я предполагаю, что Process Monitor может помочь, но не мог понять, какие события отфильтровать и как использовать их впоследствии. Любой язык / оболочка / программное обеспечение является приемлемым.

2 ответа2

0

Запись точных координат щелчков мыши никогда не является правильным способом сделать что-то подобное. Там почти всегда лучший способ.

  1. Вы можете попробовать экспортировать следующий раздел реестра и импортировать его на другой компьютер:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
    
  2. Вы можете использовать AutoHotkey для отправки соответствующих нажатий клавиш, которые бы включали адрес или другие панели инструментов. Например, на моем ПК с Win7 работает следующее для переключения панели инструментов адреса:

    Ctrl+Esc, Esc, (Shift+Tab)x3, Shift+F10, T, стрелка вправо, A

  3. Более того, что-то вроде Window Spy от AHK может помочь вам идентифицировать и получить прямую ссылку на класс области уведомлений, поэтому вы можете затем программно щелкнуть по нему правой кнопкой мыши. Что-то вроде:

    ControlGet, handle, Hwnd,, TrayClockWClass1,,Notification Area
    

    или этот скрипт:

    #NoTrayIcon
    #include <Array.au3>
    
    Dim $ctrlsize
    
    $ctrlsize=ControlGetPos("[CLASS]","","ReBarWindow321")
    
    ControlClick("[CLASS]","","ReBarWindow321","secondary",1,$ctrlsize[2],$ctrlsize[3]*0.5)
    MouseClick("primary",$ctrlsize[0]+$ctrlsize[2]+50,@DesktopHeight-215,1,1)
    
    Sleep(150)
    Send("t")
    

    AHK очень мощный, и форум - это хорошее место, чтобы задавать вопросы. Фактически, я нашел скрипт выше после быстрого поиска там, в теме, которую вы хотите прочитать под заголовком Создание панели инструментов на панели задач Windows.

0

Я также не смог автоматически сделать что-то подобное.

Тем не мение. Я выполнил аналогичную задачу с помощью комбинации пользовательских сценариев Autohotkey и Macro Creator от Pulover (http://www.autohotkey.net/~Pulover/#.UScMbldQb3E). В опциях вы также можете выбрать запись controlClick. Тем не мение. Будут проблемы с некоторыми пользовательскими элементами управления и приложением Java.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .