Hi,
bei dem folgenden Skript habe ich 2 Probleme:
1. Wenn ich das Skript direkt aus SciTE starte, kann ich keine Dateien per Drag & Drop aus dem Explorer auf die GUI ziehen.
Wenn ich es aus dem Explorer starte funktioniert es.
Woran kann das liegen?
2. Wenn ich Dateien per Drag & Drop aus dem Explorer auf die GUI ziehe, funktioniert _ArrayDisplay nicht (reagiert nicht mehr). Warum?
AutoIt
#Region ;************ Includes ************
#Include <Array.au3>
#Include <WinAPISysWin.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#EndRegion ;************ Includes ************
Opt("GUICloseOnESC", 0) ; 1=ESC beendet, 0=ESC schließt nicht
Opt("GUIOnEventMode", 1) ; 0=ausgeschaltet, 1=OnEvent Modus aktiviert
Global $hGui = GUICreate("Test", 500, 700, 0, 0, -1, $WS_EX_ACCEPTFILES)
Global $idListview = GUICtrlCreateListView("Test", 10, 10, 400, 600, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), BitOR($LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE))
GUICtrlSendMsg($idListview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($idListview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUIRegisterMsg($WM_DROPFILES, "On_WM_DROPFILES")
GUISetState(@SW_SHOW, $hGui)
GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
While 1
Sleep(10)
WEnd
Func _beenden()
Exit
EndFunc ;==>_beenden
Func On_WM_DROPFILES($hWnd, $msg, $wParam, $lParam)
Local $aFileList, $nSize, $pFileName, $tPoint, $hCtrl
$tPoint = _WinAPI_DragQueryPoint($wParam)
If Not DllStructGetSize($tPoint) Then Return ;window border
$hCtrl = _WinAPI_ChildWindowFromPointEx($hWnd, $tPoint)
If $hCtrl = ControlGetHandle($hGui, "", $idListview) Then ;ListView
$aFileList = _WinAPI_DragQueryFileEx($wParam)
_ArrayDisplay($aFileList)
_WinAPI_DragFinish($wParam)
_WinAPI_MessageBeep(0) ;Ton erzeugen
EndIf
Return
EndFunc ;==>On_WM_DROPFILES
Alles anzeigen