So in etwa sieht das bei mir vom Schema her in einem aktuellen Projekt aus:
AutoIt
;-- TIME_STAMP 2019-10-24 16:14:38 v 0.1
#RequireAdmin
#include <Array.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPISys.au3>
Global $g_hGUI = GUICreate("", 483, 165, 192, 114, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_WINDOWEDGE))
Global $g_idPathIn = GUICtrlCreateInput("", 16, 32, 441, 21)
Global $g_aDragQueryFiles
GUICtrlSetState(-1, $GUI_ACCEPTFILES)
Global $g_idFileMenu = GUICtrlCreateMenu('Datei')
Global $g_idFileMenuItem_LoadDatabase = GUICtrlCreateMenuItem('Datenbank laden', $g_idFileMenu)
Global $g_idMainGUI_ESC_Dummy = GUICtrlCreateDummy()
Global $g_aAccelKeys[1][2] = [['{ESC}', $g_idMainGUI_ESC_Dummy]]
GUISetState(@SW_SHOW)
_WinAPI_ChangeWindowMessageFilterEx($g_hGUI, $WM_DROPFILES, $MSGFLT_ALLOW)
_WinAPI_ChangeWindowMessageFilterEx($g_hGUI, $WM_COPYDATA, $MSGFLT_ALLOW)
_WinAPI_ChangeWindowMessageFilterEx($g_hGUI, $WM_COPYGLOBALDATA, $MSGFLT_ALLOW)
GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES")
; Sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_DROPFILES($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $ilParam
Switch $iMsg
Case $WM_DROPFILES
$g_aDragQueryFiles = _WinAPI_DragQueryFileEx($iwParam)
If Not @error Then
ConsoleWrite('> WM_DROPFILES $g_aDragQueryFiles:' & @CRLF & _ArrayToString($g_aDragQueryFiles, @CRLF) & @CRLF)
Else
ConsoleWrite('! WM_DROPFILES $g_aDragQueryFiles:'& @LF & "!@ " & @TAB & "#Error: " & @error & @LF)
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_DROPFILES
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode
$hWndFrom = $lParam
$iIDFrom = _WinAPI_LoWord($wParam)
$iCode = _WinAPI_HiWord($wParam)
Switch $hWndFrom
Case 0 ; Menu or Accelerator key/s has been pressed
Switch $iCode
Case 0 ; Menu
Switch $iIDFrom ; Menu identifier (IDM_*)
Case $g_idFileMenuItem_LoadDatabase
ConsoleWrite('- WM_COMMAND Case $g_idFileMenuItem_LoadDatabase' & @CRLF)
Case Else
;~ ...
EndSwitch
Case 1 ; Accelerator key/s has been pressed
Switch $iIDFrom ; Control identifier
Case $g_idMainGUI_ESC_Dummy
Exit
Case Else
;~ ...
EndSwitch
EndSwitch
Case Else ; Control identifier
Switch $iCode
Case $EN_CHANGE ; $EN_CHANGE message from one of the input / edit controls to its parent window.
Switch $iIDFrom
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Inputs Main-GUI
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Case $g_idPathIn
ConsoleWrite('- WM_COMMAND $g_idPathIn: ' & GUICtrlRead($g_idPathIn) & @CRLF)
EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG ; Anweisung an Windows, dass es mit der normalen Abarbeitung fortfahren kann
EndFunc ;==>WM_COMMAND
Alles anzeigen