Enregistre si une fenêtre accepte les fichiers tirés-déposés
#include <WinAPISysWin.au3>
_WinAPI_DragAcceptFiles ( $hWnd [, $bAccept = True] )
$hWnd | Handle de la fenêtre qui enregistre si elle acceptera les fichiers tirés-déposés. |
$bAccept | [optionnel] Spécifie si la fenêtre accepte les fichiers tirés-déposés, les valeurs valides sont: True - Accepte les fichiers tirés-déposés (par défaut). False - Cesse d'accepter les fichiers tirés-déposés. |
Aucune.
Consultez DragAcceptFiles dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WinAPISys.au3> #include <WindowsConstants.au3> OnAutoItExitRegister('OnAutoItExit') ; Crée une GUI Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 400, 400) Local $idCheck = GUICtrlCreateCheckbox('Enable Drag && Drop', 10, 370, 120, 19) Local $idLabel = GUICtrlCreateLabel('', 100, 100, 200, 200) Global $g_hLabel = GUICtrlGetHandle($idLabel) GUICtrlSetBkColor(-1, 0xD3D8EF) GUICtrlCreateLabel('Drop here', 175, 193, 50, 14) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; Autorise WM_DROPFILES à être reçu par les processus privilégiés inférieurs (Windows Vista ou une version ultérieure) #cs If IsAdmin() Then _WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_COPYGLOBALDATA, $MSGFLT_ALLOW) _WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_DROPFILES, $MSGFLT_ALLOW) EndIf #ce ; Inscrit la procédure fenêtre Global $g_hDll = DllCallbackRegister('_WinProc', 'ptr', 'hwnd; uint; wparam; lparam ') Global $g_pDll = DllCallbackGetPtr($g_hDll) Global $g_hProc = _WinAPI_SetWindowLong($g_hLabel, $GWL_WNDPROC, $g_pDll) GUISetState(@SW_SHOW) Global $iMsg Do $iMsg = GUIGetMsg() If $iMsg = $idCheck Then _WinAPI_DragAcceptFiles($g_hLabel, GUICtrlRead($idCheck) = $GUI_CHECKED) EndIf Until $iMsg = $GUI_EVENT_CLOSE Func _WinProc($hWnd, $iMsg, $wParam, $lParam) Switch $iMsg Case $WM_DROPFILES Local $sFileList = _WinAPI_DragQueryFileEx($wParam) If Not @error Then ConsoleWrite('--------------------------------------------------'& @CRLF) For $i = 1 To $sFileList[0] ConsoleWrite($sFileList[$i] & @CRLF) Next EndIf _WinAPI_DragFinish($wParam) Return 0 EndSwitch Return _WinAPI_CallWindowProc($g_hProc, $hWnd, $iMsg, $wParam, $lParam) EndFunc ;==>_WinProc Func OnAutoItExit() _WinAPI_SetWindowLong($g_hLabel, $GWL_WNDPROC, $g_hProc) DllCallbackFree($g_hDll) EndFunc ;==>OnAutoItExit