Функция _WinAPI_PostMessage

 ↑  ←  Описание функции


_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