Obter foco da janela em Autoit para aplicativos na bandeja do sistema

1

Eu tenho duas janelas abertas e não minimizadas (Autoit help e RelianceNetconnect). E o foco atual é com um arquivo do Bloco de Notas. Este é o meu script Autoit:

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

Isso funciona e a janela de ajuda automática chega ao foco. A caixa de mensagens imprime esse 0x00046ce .

Este é o meu segundo script Autoit:

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

Isso não funciona, ou seja, a janela de conexão de rede de dependência não se concentra. O MessageBos imprime 0x002C01DC .
Este link diz que WinActivate retorna o identificador para a janela solicitada se for bem-sucedida ou retorna 0 se falhou.
No segundo caso, ele retorna um valor diferente de zero. Então, por que a janela não está focada?

    
por Ashwin 16.07.2012 / 10:20

1 resposta

3

O problema era que o "Reliance Netconnect" era um aplicativo da bandeja do sistema , ou seja, residia na bandeja do sistema. Você não pode usar o WinActivate para obter seu foco. eles precisam ser redesenhados. Isso funcionou para mim

#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("{ENTER}")
send("!c")
WinSetState("Reliance Netconnect" ,"",@SW_MINIMIZE)

Você pode fazer o download de SYSTRAY_UDF em aqui . Se você for declarado como um erro 'Const', altere as primeiras linhas do SysTray_UDF.au3 para:

;~ 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
    
por 17.07.2012 / 16:45