Holen Sie sich den Fensterfokus in Autoit für Anwendungen in der Taskleiste

9500
Ashwin

Ich habe zwei Fenster geöffnet und nicht minimiert (Autoit-Hilfe und RelianceNetconnect). Und der aktuelle Fokus liegt auf einer Notepad-Datei. Dies ist mein Autoit-Skript:

DIM $s=WinActivate("AutoIt Help") MsgBox(0,"Check",$s) 

Dies funktioniert und das Autoit-Jelp-Fenster wird fokussiert. Das Meldungsfeld druckt dies 0x00046ce.

Dies ist mein zweites Autoit-Skript:

DIM $s=WinActivate("Reliance Netconnect") MsgBox(0,"Check",$s) 

Dies funktioniert nicht, dh das Zuverlässigkeitsnetzwerk-Fenster wird nicht fokussiert. Die MessageBos-Drucke 0x002C01DC.
Dieser Link besagt, dass WinActivateentweder das Handle an das angeforderte Fenster zurückgegeben wird, falls erfolgreich, oder 0, wenn es fehlgeschlagen ist.
In meinem zweiten Fall gibt es einen Wert ungleich Null zurück. Warum wird das Fenster dann nicht fokussiert?

1
Ich möchte nur erwähnen, dass 2C01DC * das Handle * ist. Colyn1337 vor 11 Jahren 0

1 Antwort auf die Frage

3
Ashwin

Das Problem war, dass "Reliance Netconnect" eine Taskleiste war, dh sie befand sich in der Taskleiste. Sie können WinActivate nicht verwenden, um deren Fokus zu ermitteln. Sie müssen neu gezeichnet werden. Das hat bei mir funktioniert

#Include <GuiToolBar.au3> #include "SysTray_UDF.au3" WinSetState("Reliance Netconnect" ,"",@SW_RESTORE) DIM $index=_SysTrayIconIndex("Reliance Netconnect", 1) ;MsgBox(1,"index",$index) _GUICtrlToolbar_ClickIndex(ControlGetHandle('[CLASS:Shell_TrayWnd]','','ToolbarWindow321'), $index, "left",False,2) WinActivate("Reliance Netconnect") WinWaitActive("Reliance Netconnect") send("") send("!c") WinSetState("Reliance Netconnect" ,"",@SW_MINIMIZE) 

Sie können SYSTRAY_UDF von hier herunterladen . Wenn Sie zuvor als Const-Fehler deklariert wurden, ändern Sie die ersten Zeilen von SysTray_UDF.au3 in:

;~ Const $TB_DELETEBUTTON = 1046 ;~ Const $TB_GETBUTTON = 1047 ;~ Const $TB_BUTTONCOUNT = 1048 Const $TB_GETBUTTONTEXT = 1099 Const $TB_GETBUTTONINFO = 1089 ;~ Const $TB_HIDEBUTTON = 1028 ; WM_USER +4 ;~ Const $TB_GETITEMRECT = 1053 ;~ Const $TB_MOVEBUTTON = 1106 ; WM_USER +82 Const $WM_GETTEXT = 13 ; Included in GUIConstants ;~ Const $PROCESS_ALL_ACCESS = 2035711 Const $NO_TITLE = "---No title---" ; text that is used when icon window has no title