2015-09-20 2 views
0

Вот мой сценарий:Не удается получить ControlGet работать

ControlGet, Output, Hwnd,,, ahk_id TV_REMOTEDESKTOP_CLASS1 

MsgBox %Output% 

PostClick(%Output%, 1170, 305, 10, 50) 

PostClick(hwnd, X, Y, Count, Delay) 
{ 
    p := y << 16 | (x & 0xffff) 
    Loop, %Count% { 
     PostMessage, 0x201, 1, p, , ahk_id %hwnd% 
     If (Delay) 
      Sleep Delay 
     PostMessage, 0x202, 0, p, , ahk_id %hwnd% 
     If (Delay) 
      Sleep Delay 
    } 
} 

И я не могу заставить его работать! Я хочу, чтобы он щелкнул по X Y pos, в программе, которая не видна/не перемещается.

Я мог бы использовать Click, но тогда мне придется открыть программу, и она будет перемещать мышь на каждый щелчок.

функция PostClick от: http://www.autohotkey.com/board/topic/35742-postmessage-click-useful-hwnd-clicker/

Я не уверен, как это сделать.

редактировать:

ControlGet, chwnd, Hwnd,,, ahk_id TV_REMOTEDESKTOP_CLASS1 
PostClick(chwnd, 1223, 395, 10, 50) 

PostClick(hwnd, X, Y, Count, Delay) 
{ 
    p := y << 16 | (x & 0xffff) 
    Loop, %Count% { 
     PostMessage, 0x201, 1, p, , ahk_id %hwnd% 
     If (Delay) 
      Sleep Delay 
     PostMessage, 0x202, 0, p, , ahk_id %hwnd% 
     If (Delay) 
      Sleep Delay 
    } 
} 

мой новый код. (Пробовал чей скрипт) Мои позиции мыши в соответствии с au3_spy:

В активном окне: 1223, 395 На экране: 1136, 398

ответ

1
  1. PostClick(%Output%, 1170, 305, 10, 50) неправильно, потому что это выражение (это функция вызов, а не команда), поэтому переменная Output не нужна %.

  2. ahk_id TV_REMOTEDESKTOP_CLASS1 не соответствует действительности, контроль указан без ahk_id и в другом положении, см. Документацию по ControlGet.

  3. По умолчанию используется last found window, поэтому вам нужно указать, какое окно искать, например, используя ahk_class TV_CClientWindowClass.

  4. Также обратите внимание, что согласно документации координаты WM_LBUTTONDOWN (0x201) относятся к элементу управления, который принимает сообщение. Чтобы вычислить относительные координаты, вычтите верхние левые угловые координаты TV_REMOTEDESKTOP_CLASS1 управления из абсолютных координат точки щелчка. Например, если верхний левый угол (500 100), то (1170,305) станет (670,205).


Предполагая (1170, 305) координаты уже относительны, правильный код будет:

DetectHiddenWindows, On 
ControlGet, output, Hwnd, , TV_REMOTEDESKTOP_CLASS1, ahk_class TV_CClientWindowClass, TV_CClientToolBar 
PostClick(output, 1170, 305, 10, 50) 
+0

Привет. Я отредактировал свой пост, хорошо добавил некоторые к нему. – prk

+0

Как получить верхние угловые координаты и т. Д. – prk

+0

Могу быть управляющим LOL. Поскольку в разделе «Название окна и класс» ahk_class - это TV_CClientWindowClass - ClassNN - это REMOTEDESKTOP thingy. – prk

Смежные вопросы