Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C# und .NET ::  Drag+Drop geht nicht mehr     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Buccino
Unregistrierter




Beitrag Buccino Unregistrierter 17:40:54 02.09.2010   Titel:   Drag+Drop geht nicht mehr            Zitieren

Hallo,

in meinem Programm gibt es seit neustem das Problem, dass Drag and Drop nicht
mehr funktioniert - und zwar in allen Controls. Das sind bspw. mehrere TreeViews, ein DataGrid und mehr.

Das MouseOver wird erkannt und dann das DoDragDrop(..) wird ausgeführt, allerdings scheinbar nur in meinem Code und nicht im Backend.
Zu diesem Problem scheint es sporadisch zu kommen, leider konnte ich es bisher noch auf keine definitive Ursache zurückführen.

Weiß da vielleicht jemand Rat?
Buccino
Unregistrierter




Beitrag Buccino Unregistrierter 10:35:12 07.09.2010   Titel:              Zitieren

Ich habe das Problem leider immer noch nicht gelöst, allerdings gibt es scheinbar noch ein Problem an anderer Stelle, welches damit zusammenhängt.
Und zwar will ich den explorer.exe an einer bestimmten Stelle starten. Hierbei kommt der folgende Fehler:
Fehler -2147467259: "Der angegebenen Datei ist keine Anwendung zugeordnet"

Vielleicht doch noch jemand ne Idee?
Buccino
Unregistrierter




Beitrag Buccino Unregistrierter 13:43:56 08.09.2010   Titel:              Zitieren

Niemand?
Wirklich keiner ???
:-(

Ich habe jetzt noch festgestellt, dass dem Ganzen ein Fehler in der mscorlib.dll vorausgeht.
Hierfür scheint eine Interop Komponente verantwortlich zu sein ...
Dravere
Moderator

Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 7463
Beitrag Dravere Moderator 14:13:52 08.09.2010   Titel:              Zitieren

Ich kenne mich mit Drag&Drop in C# nicht aus, kann dir also nur sehr schlecht helfen. Aber mal einfach grundsätzlich, scheinen mir die Informationen etwas dürftig zu sein, welche du uns gibst.
0. Es scheint mal funktioniert zu haben, schon mal probiert festzustellen, was sich in der Zwischenzeit verändert hat?
1. Du redest von deinem Code, zeigst aber nichts davon. Wir wissen nicht mal, ob du alles richtig initialisiert hast.
2. Du redest von einem Backend. Ich habe keine Ahnung, was du damit meinst. Daher habe ich auch Mühe mit dem Satz dort. Was funktioniert nun wo und wo funktioniert es nicht?
3. Sporadische Fehler sind mühsame Fehler. Wenn man einen Fehler nicht reproduzieren kann, dann tappt man ziemlich im Dunkeln. Meistens liegt aber irgendwo ein Logikfehler vor und zwar im eigenen Programm.
4. Wie soll das Starten von der explorer.exe mit Drag&Drop zusammenhängen? Wie kommst du darauf? Wieso willst du überhaupt die explorer.exe starten? Der Fehler wirkt zudem überhaupt nicht nach einem Drag&Drop Fehler sondern eher danach, dass du ein File ohne Endung oder mit Endung, aber ohne zugewiesener Standardanwendung, starten möchtest.
5. Du schreibst von einem Fehler in der mscorlib.dll, ohne diesen Fehler genauer zu bezeichnen. Was soll das für ein Fehler sein? Wie stellst du diesen fest? Wann passiert er? Wo in deinem Code? Was für eine Interop Komponente? Von was zur Hölle redest du da?
6. Ein Beispielcode, welcher dein Problem in Kürze reproduziert, wäre sehr hilfreich für dich und für uns. Probier das Problem in einem kurzen Programm zu reproduzieren. Da kann plötzlich von alleine der AHA-Effekt eintreten.

Grüssli

_________________
Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
Buccino
Unregistrierter




Beitrag Buccino Unregistrierter 15:38:12 08.09.2010   Titel:              Zitieren

Hi,

0) ja ... allerdings ohne Erfolg
1) Da der Fehler nur sporadisch auftritt, kann ich auch leider nicht *die* Stelle posten, an der es geschieht.
2) Sorry, mit Backend mein ich die .NET Runtime, bzw, das worauf sie zugreift
3) Dito, ist aber kein Logikfehler. Mehr als DoDragDrop aufrufen kann ich auch nicht machen. Ich kann da leider nicht soweit ins Framework reingucken, um zu sehen, warum kein Drag gemacht wird sondern der Stack (oder was auch immer da im Hintergrund liegt, leer bleibt ...
4) Ist nur eine Vermutung von mir. Das Starten eine Prozessen, ob explorer.exe oder sonst was, nutzt im Hintergrund Win32/COM, ebenso wie die Drag+Drop Funktionalität oder eben ein Interop Service. Und da dies alles nicht mehr Funktioniert vermute ich dort den Fehler.

Ich kann leider keine genaueren Information liefern. Wie ich schon sagte tritt das Problem nur sporadisch auf, scheinbar nach irgendwelchen impliziten Win32 Zugriffen (wie zB das Starten eines externen Prozesses, oder eben dem Nutzen einer Interop-Bibliothek) - und das auch nicht immer.
Die Debug Infos, die ich erhalte sind auch nicht mehr, als ich bereits geschrieben habe - das macht das ganze ja so sche**e.
witte
Mitglied

Benutzerprofil
Anmeldungsdatum: 08.01.2008
Beiträge: 1295
Beitrag witte Mitglied 16:37:04 08.09.2010   Titel:              Zitieren

Können denn noch andere Apps das Drag'n'Drop ausführen oder ist dannd er Fehler nur in deiner App?
Dravere
Moderator

Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 7463
Beitrag Dravere Moderator 16:56:51 08.09.2010   Titel:              Zitieren

Was ist denn eigentlich der genaue Fehler? Du sagst, dass das MouseOver Event ausgeführt wird, also ruft es auch die DoDragDrop Methode auf. Gibt es dann eine Exception oder was passiert dann? Oder passiert einfach gar nichts? Was probierst du denn für Objekte zu verschieben? Ist es im übrigen eine Forms oder WPF Anwendung?

Hast du schonmal eine neue Anwendung gestartet, von einem Bereich das Drag&Drop reproduziert und dann geschaut, ob der Fehler auch sporadisch auftaucht?

Und wie hast du im übrigen überprüft, wann der Fehler auftaucht? Wie kommst du darauf, dass es mit der explorer.exe oder mit Win32 Aufrufen zusammenhängt? Wie bist du darauf gekommen? Wie kommst du zum Beispiel zu diesem Fehler der explorer.exe?

Grüssli

_________________
Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
loks
Unregistrierter




Beitrag loks Unregistrierter 13:37:19 09.09.2010   Titel:              Zitieren

Unter Win7 werden Drag-Operationen von einem Process mit niedriger Sicherheitsstufe in einen Process mit höherer Sicherheitsstufe vom UAC blockiert.

Beispiel: Du startest ein Programm als Administrator (oder elevatest es nachträglich) und versuchst dann etwas aus dem Explorer auf das Programm zu draggen --> wird blockiert weil Explorer nur USer-Priviledges hat, das Programm aber als Admin läuft. Dies gilt allgemien für Nachrichten zwischen Prozessen und betrifft halt auch DragnDrop.
Buccino
Unregistrierter




Beitrag Buccino Unregistrierter 14:12:53 09.09.2010   Titel:              Zitieren

Hallo,
ich konnte die Ursache jetzt lokalisieren. Wie vermutet scheint es wohl so, dass das Nutzen einer COM Komponente mittels Interop zu einer Art "Blockade" tief im .NET Framework führt. Allerdings nur, wenn die COM Schnittstellen in einer speziellen Reihenfolge aufgerufen werden.

Danke trotzdem ...
C/C++ Forum :: C# und .NET ::  Drag+Drop geht nicht mehr   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.