- Сообщения
- 8,673
- Репутация
- 2,484
Как известно, GUICtrlSendToDummy не работает для скрытого GUI, вот пример показывающий это:
А вот так можно это обойти:
Идея в том, чтобы создать Dummy в другом GUI, которое скрывается используя WinSetState вместо GUISetState.
P.S
Данное поведение намеренное, об этом есть комментарии в старом исходном коде AutoIt:
Странно что это не упоминается в справке (AZJIO? :whistle.
Открыл тикет по теме.
Код:
#include <GUIConstantsEx.au3>
$hGUI = GUICreate('')
$iDummy = GUICtrlCreateDummy()
;~ GUISetState()
GUICtrlSendToDummy($iDummy)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $iDummy
MsgBox(64, 'Title', 'Dummy')
EndSwitch
WEnd
А вот так можно это обойти:
Код:
#include <GUIConstantsEx.au3>
$hGUI = GUICreate('')
$iDummy = _GUICtrlCreateDummyEx($hGUI)
GUICtrlSendToDummy($iDummy)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $iDummy
MsgBox(64, 'Title', 'Dummy')
EndSwitch
WEnd
Func _GUICtrlCreateDummyEx($hGUI)
Local $hDummy_GUI, $iDummy
$hDummy_GUI = GUICreate('', 5, 5, -10, -10)
GUISetState(@SW_SHOWNOACTIVATE, $hDummy_GUI)
WinSetState($hDummy_GUI, '', @SW_HIDE)
$iDummy = GUICtrlCreateDummy()
GUISwitch($hGUI)
Return $iDummy
EndFunc
Идея в том, чтобы создать Dummy в другом GUI, которое скрывается используя WinSetState вместо GUISetState.
P.S
Данное поведение намеренное, об этом есть комментарии в старом исходном коде AutoIt:
Код:
// If the GUI is hidden then we don't want to trigger any messages because we may be modifiying things
// via the script when hidden
Странно что это не упоминается в справке (AZJIO? :whistle.
Открыл тикет по теме.