ListView - 3 Probleme: ArrayDisplay / Drag & Drop / erweiterte Stile

  • Oh sorry, ja ich meine die unterschiedlichen Rahmen

    Mir gefällt der Rahmen im linken ListView nicht. >>> hier werden die Stile direkt mit GUICtrlCreateListView gesetzt

    Der Rahmen im rechten ListView ist schöner. >>> hier werden manche Stile mit _GUICtrlListView_SetExtendedListViewStyle gesetzt

    Deshalb:

    Fazit: $WS_EX-Styles mit GUICtrlCreateListView und $LVS_EX-Styles mit _GUICtrlListView_SetExtendedListViewStyle setzen.

    Nun aber zurück zum eigentlichen Thema. Wer kann noch was zum Thema Drag & Drop beitragen;)

  • Da waren sie wieder, meine 3 ListView Probleme! ... Prima, dann ist ja 1 gelöst! :saint:

    Nun aber zurück zum eigentlichen Thema. Wer kann noch was zum Thema Drag & Drop beitragen

    Wie ist denn dein letzer Stand, wie sieht dein Code nun aus? Funktionieren die Tipps von B&B?

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Bei mir funktioniert alles, gestartet in SciTE, PSPad, oder direkt mit der AutoIt3.exe (ohne Editor), ziehen auf das ListView, ziehen auf die GUI => keine Probleme.

    Mein System ist Win 10 x64, Standard-Admin (wie er beim Installieren von Windows angelegt wird).

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Script in Post #3 - Fehler mit ExStyle korrigiert und _WinAPI_ChangeWindowMessageFilterEx hinzugefügt... Tweaky teste mal, ob es so nun funktioniert.

    _WinAPI_ChangeWindowMessageFilterEx - im Bsp. für _WinAPI_DragAcceptFiles zu finden... ist dort jedoch auskommentiert.

    Code
    ; Allow WM_DROPFILES to be received from lower privileged processes (Windows Vista or later)
    #cs
    If IsAdmin() Then
        _WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_COPYGLOBALDATA, $MSGFLT_ALLOW)
        _WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_DROPFILES, $MSGFLT_ALLOW)
    EndIf
    #ce
  • In der Konsole steht mit dem Beispiel

    Code
    IsAdmin() = 1
    $iMessageFilter = 1
    $iMessageFilter = 1

    Ich weiß jetzt woran es liegt.

    Ich habe SciTE Admin-Rechte gegeben, damit ich au3-Dateien direkt unter C:\ speichern kann. Ist quasi mein Müllordner für schnelle Versuche:P.

    Dies habe ich in der Registry eingestellt.

    Code
    [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
    "C:\\Program Files (x86)\\AutoIt3\\SciTE\\SciTE.exe"="~ RUNASADMIN"

    Wenn ich dies deaktiviere, funktioniert es.

    Gibt es einen Weg beides zu bekommen (Dateien auf C:\ speichern und Drag & Drop?)

  • In der Konsole steht mit dem Beispiel

    Ops, da warst du wohl zu schnell... ich hatte in dem Script noch ein Exit drin... jetzt aber nicht mehr... teste es bitte noch mal.

    Gibt es einen Weg beides zu bekommen (Dateien auf C:\ speichern und Drag & Drop?)

    Lege ein Verzeichnis auf C:\ an, in dem du deine AutoIt-Files speicherst... dann brauchst du SciTE auch nicht mehr als Admin starten... alle anderen Lösungen sind nicht zu empfehlen!

  • Also in der Konsole steht das gleiche drin.

    Somit hatte ich wohl bereits das aktuelle Skript.

    Ok, mit einem Unterordner auf C:\ funktioniert es nun.

    Somit sind alle Probleme gelöst:)

    Danke euch 3 für die Geduld:)

  • Hier eine etwas geänderte Version des Bsp. aus der AutoIt-Hilfe zu _WinAPI_DragAcceptFiles, das auch funktioniert, wenn das Script als Administrator ausgeführt wird.

    Im Original wird ein Label verwendet, für Tweaky habe ich dafür nun ein Listview verwendet... und zudem folgende auskommentierte Zeilen im Script aktiviert:

    AutoIt
    ; Allow WM_DROPFILES to be received from lower privileged processes (Windows Vista or later)
    #cs
    If IsAdmin() Then
        _WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_COPYGLOBALDATA, $MSGFLT_ALLOW)
        _WinAPI_ChangeWindowMessageFilterEx($g_hLabel, $WM_DROPFILES, $MSGFLT_ALLOW)
    EndIf
    #ce

    Dies ermöglicht den Empfang von WM_DROPFILES von Prozessen mit niedrigeren Berechtigungen.

    Weil sich das Listview in dem geänderten Bsp. in einer Group befindet, muss bei _WinAPI_DragAcceptFiles das Handle der Group angegeben werden, ohne Group das Handle des Listviews.