Drag & Drop von Windows Explorer auf ein Windows Form funktioniert nicht

8

Ich habe ein Problem beim Ziehen einer Datei von Windows Explorer auf eine Windows Forms-Anwendung.

Es funktioniert gut, wenn ich Text ziehe, aber aus irgendeinem Grund erkennt es die Datei nicht. Hier ist mein Testcode:

%Vor%

AllowDrop wird in Form1 auf true gesetzt, und wie ich bereits erwähnt habe, funktioniert es, wenn ich Text in das Formular ziehe, nur keine tatsächliche Datei.

Ich benutze Vista 64-bit ... nicht sicher, ob das ein Teil des Problems ist.

    
mattruma 11.11.2008, 18:12
quelle

4 Antworten

20

Das Problem kommt von Vista UAC . DevStudio wird als Administrator ausgeführt, der Explorer wird jedoch als normaler Benutzer ausgeführt. Wenn Sie eine Datei aus dem Explorer ziehen und auf Ihrer gehosteten DevStudio-Anwendung ablegen, entspricht dies einem nicht privilegierten Benutzer, der versucht, mit einem privilegierten Benutzer zu kommunizieren. Es ist nicht erlaubt.

Dies wird wahrscheinlich nicht angezeigt, wenn Sie die App außerhalb des Debuggers ausführen. Es sei denn, Sie führen es als Administrator aus (oder wenn Vista automatisch erkennt, dass es sich um eine Installations- / Setup-App handelt).

Sie könnten auch Explorer als Administrator ausführen , zumindest zum Testen. Oder deaktivieren Sie die Benutzerkontensteuerung (was ich nicht empfehlen würde, da Sie diese Probleme während der Entwicklung und nicht während der Bereitstellung wirklich bemerken möchten!)

    
Gene 13.11.2008, 20:19
quelle
0

Der Code, den Sie gepostet haben sollte funktionieren.

Fügen Sie dies am Anfang der DragEnter-Methode ein

%Vor%

, die mit dem d'n'd-Vorgang verknüpfte Datenformate ausgibt. Könnte uns helfen, das Problem zu verengen.

    
arul 11.11.2008 18:32
quelle
0

Ich habe den Code hinzugefügt, der arul erwähnt und die Dinge haben immer noch nicht funktioniert, aber es hat mich zum Nachdenken gebracht.

Ich dachte, es könnte ein Vista-Problem sein, also schickte ich es an einen Freund, der Windows XP hatte und es funktionierte großartig! Ich habe dann versucht, es außerhalb des Release-Verzeichnisses im bin-Verzeichnis auszuführen und was weißt du, dass es funktioniert hat!

Das einzige Mal, wenn es nicht funktioniert, wenn ich es innerhalb der Visual Studio 2008 IDE starte ... das ist einfach komisch.

    
mattruma 11.11.2008 21:58
quelle
0

Haben Sie versucht, das Attribut STAThread zur Hauptmethode hinzuzufügen?

%Vor%

Ich hatte das gleiche Problem wie @mattruma, was bedeutet, dass ich keine Drag & Drop-Ereignisse habe. Nachdem das Attribut STAThread zur Hauptmethode hinzugefügt wurde, funktionierte es wie erwartet.

    
k3b 27.09.2012 16:14
quelle

Tags und Links