2013-02-13 47 views
-1

我使用ControlSend()在不同的窗口中發送熱鍵。問題是找到合適的窗口控制。或者控制是正確的,還有一個未知的問題。這些都是控制:自動控制

標題:PokeMMO
:LWJGL
控件ID:仍然未知
過程:javaw.exe的

$handle = WinGetHandle("[TITLE:PokeMMO; CLASS:LWJGL]") 
ControlSend($handle, Default, $handle, "{Down}") 

沒有工作。

Global $sProcess = "javaw.exe" ; Process PokeMMO 

ControlSend(_Process2Win($sProcess), "", "", "{DOWN}") 

Func _Process2Win($pid) 
    If IsString($pid) Then $pid = ProcessExists($pid) 
    If $pid = 0 Then Return -1 
    $list = WinList() 
    For $i = 1 To $list[0][0] 
     If $list[$i][0] <> "" And BitAND(WinGetState($list[$i][1]), 2) Then 
      $wpid = WinGetProcess($list[$i][0]) 
      If $wpid = $pid Then Return $list[$i][0] 
     EndIf 
    Next 
    Return -1 
EndFunc ;==>_Process2Win 

沒有工作。我也試過這樣:

Run("C:\path\path\path\PokeMMO.exe") 
WinWait("[CLASS:LWJGL]") 
Local $sControl = ControlGetFocus("[CLASS:LWJGL]") 
MsgBox(0, "ControlGetFocus Example", "The control that has focus is: " & $sControl) 

制度的幾點信息:Java虛擬機啓動 - Java異常已發生錯誤!

A guide on YouTube告訴安裝不同版本的Java。

+0

它是一個桌面窗口嗎?嘗試WinFlash它。它是一個exe編譯的Java程序嗎? Java不使用本機Win API。所以很難自動化。嘗試使用空字符串「」更改第一個示例中的默認參數。如果Control-Functions不適用於Java應用程序,則應嘗試使用WinActivate,然後再嘗試使用Send。 – Samoth 2013-02-13 07:54:13

回答

0

嘗試使用標題和文本參數,但將controlID參數保留爲「」或「」。這也應該起作用。祝你好運。