# Function Reference

# _WinAPI_RegisterWindowMessage

Defines a new window message that is guaranteed to be unique throughout the system

#include <WinAPISysWin.au3>
_WinAPI_RegisterWindowMessage ( $sMessage )

## Parameters

$sMessage | String that specifies the message to be registered

## Return Value

Success: | A message identifier in the range 0xC000 through 0xFFFF
Failure: | 0, call _WinAPI_GetLastError() to get extended error information

## Remarks

The RegisterWindowMessage function is used to register messages for communicating between two cooperating
applications. If two different applications register the same message string, the applications return the same
message value. The message remains registered until the session ends.

## See Also

Search RegisterWindowMessage in MSDN Library.

## Example

    #include <APISysConstants.au3>
    #include <WinAPISysWin.au3>

    Opt('TrayAutoPause', 0)

    OnAutoItExitRegister(OnAutoItExit)

    Global $g_hForm = GUICreate('')
    GUIRegisterMsg(_WinAPI_RegisterWindowMessage('SHELLHOOK'), WM_SHELLHOOK)
    _WinAPI_RegisterShellHookWindow($g_hForm)

    ToolTip("Type ESC to exit the script")
    HotKeySet("{ESC}", "_Exit")

    While 1
        Sleep(100)
    WEnd

    Func WM_SHELLHOOK($hWnd, $iMsg, $wParam, $lParam)
        #forceref $iMsg

        Local $sTitle = WinGetTitle($lParam)
        Switch $hWnd
            Case $g_hForm
                Switch $wParam
                    Case $HSHELL_REDRAW
                        ConsoleWrite('Redrawn: ' & $sTitle & @CRLF)
                    Case $HSHELL_WINDOWACTIVATED, $HSHELL_RUDEAPPACTIVATED
                        ConsoleWrite('Activated: ' & $sTitle & @CRLF)
                EndSwitch
        EndSwitch
    EndFunc   ;==>WM_SHELLHOOK

    Func OnAutoItExit()
        _WinAPI_DeregisterShellHookWindow($g_hForm)
    EndFunc   ;==>OnAutoItExit

    Func _Exit()
        Exit 1
    EndFunc   ;==>_Exit