_WinAPI_PostMessage
Помещает сообщение в очередь сообщений и затем возвращает
#include <WinAPI.au3>
_WinAPI_PostMessage($hWnd, $iMsg, $iwParam, $ilParam)
Параметры
$hWnd | Дескриптор окна, процедура которого получит сообщение. Если этот параметр равен 0xFFFF (HWND_BROADCAST), то сообщение высылается всем окнам верхнего уровня в системе, включая отключенные или невидимые неизвестные окна, перекрывающиеся, всплывающие окна; но сообщение не высылается дочерним окнам. |
$iMsg |
Высылаемое сообщение |
$iwParam |
Первый параметр сообщения |
$ilParam |
Второй параметр сообщения |
Возвращаемое значение
Успех: | Возвращает True |
Ошибка: | Возвращает False |
См. также
Искать PostMessage в библиотеке MSDNПример
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
Global $k = 0
$Gui = GUICreate("WM_COMMAND", 390, 220)
$iButton = GUICtrlCreateButton("Button", 10, 15, 90, 28, 0)
$hButton = GUICtrlGetHandle(-1)
$Label = GUICtrlCreateEdit('Функция WM_COMMAND выполняется при клике на элементах окна.', 115, 5, 270, 210, $ES_MULTILINE)
GUICtrlSetBkColor(-1, 0xfffbd7)
GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
AdlibRegister("_Test", 1000)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func _Test()
; Высылаемые параметры согласно документации для текущего сообщения
_WinAPI_PostMessage($Gui, $WM_COMMAND, _WinAPI_MakeLong($iButton, $BN_DBLCLK), $hButton)
EndFunc ;==>_Test
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nID = BitAND($wParam, 0x0000FFFF) ; _WinAPI_LoWord
Local $nNotifyCode = BitShift($wParam, 16) ; _WinAPI_HiWord
GUICtrlSetData($Label, _
' Параметры:' & @CRLF & _
' -----------------------------' & @CRLF & _
' $hWnd (дескриптор окна) ' & @TAB & ': ' & $hWnd & @CRLF & _
' $Msg (код сообщения)' & @TAB & ': ' & Hex(Int($Msg), 4) & @CRLF & _
' $wParam' & @TAB & @TAB & ': ' & $wParam & @CRLF & _
' $lParam' & @TAB & @TAB & @TAB & ': ' & $lParam & @CRLF & @CRLF & _
' Информация:' & @CRLF & _
' -----------------------------' & @CRLF & _
' Код уведомления (NotifyCode)' & @TAB & ': ' & $nNotifyCode & @CRLF & _
' Идентификатор элемента (CtrlID)' & @TAB & ': ' & $nID & @CRLF & _
' Дескриптор элемента (CtrlHWnd)' & @TAB & ': ' & $lParam)
$k += 1
WinSetTitle($Gui, '', 'Вызов ' & $k & ' раз')
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND