2011-09-02 31 views
0

我正在寫一個腳本,它會自動點擊pokerstars大廳上的Waiting List按鈕。我嘗試過Click x,y,它可以工作,但問題在於,如果焦點從大廳切換到表格,則會單擊raise/call按鈕 - DISASTER。ahk controlclick pokerstars等待列表

尋找解決方案,我發現ControlClick可以爲我做這項工作,但我無法讓腳本工作。我閱讀了關於ControlClick工作的parameters needed,並且使用我使用WindowSpy發現的參數的不同組合,我無法使腳本正常工作。

這裏有一些我已經tried--

線的
a:: 
SetControlDelay -1 
ControlClick PokerStarsButtonClass34, PokerStars Lobby, Waiting List 
return 

a:: 
SetControlDelay -1 
ControlClick x900 y65, Pokerstars Lobby, Waiting List 
return 

你可以幫我解決這個問題 - 感謝

回答

2

首先,我會嘗試忽略你的ControlClick呼叫WinText參數(這意味着刪除尾隨的「等待列表」),因爲我不確定星球大廳實際上是否將該文本作爲其文本的一部分通過窗口間諜可見。 WinTitle應該足夠了。

如果您搜索AHK論壇,您會發現許多人抱怨ControlClick未正確發送點擊按鈕或窗口。所以你的問題不是唯一的。

現在,afaik ControlClick只是發送WM_LBUTTONDOWN消息的包裝。但是,在某些的情況下,當ControlClick發生故障時,直接發送消息實際上是有效的。實際上,此功能通常用於爲Pokerstars設計的AHK腳本。

PostLeftClick(x, y, hwnd) { 
    PostMessage, 0x201, 0x0001, ((y<<16)^x), , ahk_id%hwnd% ;WM_LBUTTONDOWN=0x201 
    PostMessage, 0x202 , 0, ((y<<16)^x), , ahk_id%hwnd%  ;WM_LBUTTONUP=0x202 
} 

所以你可以試試上面的函數,看它是否有效。您需要首先獲取大廳的句柄,例如lobbyhwnd := WinExist("Pokerstars Lobby"),然後通過lobbyhwnd作爲上述函數的第三個參數。

如果它不起作用,我建議通常只使用Click,但在發送點擊之前明確地激活大廳,這樣您就可以確定點擊被髮送到正確的窗口。例如:

a:: 
    WinActivate, Pokerstars Lobby 
    Click x900, y65 
return