Autohotkey Win XP, автоматизирующая небольшую задачу - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть небольшая задача, которую я хотел бы автоматизировать с помощью Autohotkey, и похоже, что она более или менее напрямую переносится в синтаксис autohotkey:

1. Ctrl+v
2. Alt+tab
3. Click certain link in a window (no combo-key for this but it's always in the same place)
4. Enter (carriage return)
5. Alt+s
6. Ctrl+v
7. Enter

Теперь было бы неплохо сопоставить эту комбинацию с чем-тоиначе, например, Windows Key + Space.

То, что я получил до сих пор:

0. SetWinDelay 100  (using a connection to an remote computer)
0. SetKeyDelay 0
1. Send, ^c
1. ClipWait, 0.1 
2. Send, {Alt down}{tab}
2. Send, {Alt up}
3. ?????
4. Send, {enter}
5. Send, !s
6. Send, ^v
7. Send, {enter}

Это приблизительно правильно?Кто угодно, чтобы помочь мне исправить это или заполнить дыры, так сказать:)

Другой альтернативой шагам 3, 4 и 6 было бы просто зациклить содержимое буфера обмена (числовая строка) иотправлять каждое письмо строки на нажатие клавиш?Может быть, так будет проще

1 Ответ

1 голос
/ 08 ноября 2011

Если вы хотите «щелкнуть» по определенной позиции, чтобы открыть меню, вы можете сначала щелкнуть правой кнопкой мыши по значку AutoHotKey и открыть «окно шпиона». Этот шпион окна покажет вам положение мыши. Йо может использовать положения мыши для выполнения ваших действий в активном приложении.

Пример:

SoundBeep 1000, 300 ; Wake up user

SplashTextOn, 200, 100, Script Preparations, Please Click on the person icon link. ; Show new Instructions text

WinMove, Script Preparations,, (A_ScreenWidth/2)+150, (A_ScreenHeight/2)+200 ; Move the window with the name "Script Preparations" Down and Right on the main screen

KeyWait, LButton, D ; Wait for LeftMouseButton click Down

MouseGetPos, xposE ,yposE ; Store the position where the mouse was clicked (Employee)

MouseClick, left, %xposE% ,%yposE%, 2 ; Perform a double mouse click on the captured mouse location

SplashTextOff ; Remove Text box

В этом случае я сначала прошу пользователя вручную нажать на нужное место. Это требуется только в том случае, если позиция нажатия изменяется в активном окне (переменные плитки в активном окне). Как только вы сохраните позицию, вы можете повторно использовать ее в скрипте.

b.t.w. вместо использования Alt + Tab , я предлагаю использовать это:

settitlematchmode, 1 ; Set search in title to start with....

settitlematchmode, Fast ; Slow is not required here. Slow is only required when hidden text needs to be found.

SwitchWindow("Microsoft Excel - 1 QRM Upload and Change Template") ; Activate the 
window with the title: Microsoft Excel - 1 QRM Upload and Change Template

You could even use someting like this:

SetTitleMatchMode, 2 ; Ensure that the Title Match mode is set to 2: Find anywhere in the title

  SetTitleMatchMode, Fast ; Ensure that the Title Match mode is set to FAST

  winactivate, %WindowName% ; Activate the window with the title stored in the variable WindowName

  WinWaitActive, %WindowName%, , 5 ; Wait up to five seconds for the screen

  if ErrorLevel ; Execute this when the window is not activated within 5 seconds

  { ; Start-If Wait failed

    SoundBeep 1000 , 1000 ; Warn the user

    MsgBox,4097,Time Out, Script timed out while waiting for %WindowName%.`n`rYou Must manually activate %WindowName% and then continue the script by pressing OK. ; Message to user

    IfMsgBox, Cancel ; Do when the user clicked on Cancel

    { ; Start-If User clicked Cancel

      ExitApp ; Exit this program when the user clicked on Cancel

    } ; End-If User clicked Cancel

    WinWaitActive, %WindowName%, , 5 ; Try to activate the window AGAIN

    if ErrorLevel ; If window can't be found

    { ; Start-If window can't be found

      MsgBox,4096,Exit, %WindowName% still NOT Active. ; Warn user

      ExitApp ; Exit this program when the expected window is still not found

    } ; End-If window can't be found

  } ; End-If Wait failed

С уважением,

Роберт Ильбринк

...