Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*) (https://www.delphipraxis.net/186253-windows-bug-mit-bestimmter-netzlaufwerkskonstellation-%2Aherausforderung-gesucht-%2A.html)

Sir Rufo 18. Aug 2015 09:40

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Nun ja, ein Video, wo du zwei Explorer Fenster siehst, von denen ich das eine Fenster überwache und in dem anderen Fenster das Laufwerk verbinde und wieder trenne, wäre schon etwas Overkill.

CodeX 18. Aug 2015 10:15

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Und welche Einstellungen genau? "Additional Windows"? Welche Auswahl bei "Messages"?
Und der zweite Teil meiner Frage nach der Deutung der zweiten Message?
Mensch, jetzt lass Dir doch nicht alles aus der Nase ziehen. :-D

CodeX 18. Aug 2015 11:26

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Nach einer Stunde mit dem API Monitor weiß ich nun zumindest, dass net.exe bei
Delphi-Quellcode:
net use z: /disconnect
intern auch einfach nur MSDN-Library durchsuchenWNetCancelConnection2 aufruft. Das erklärt das gleiche Resultat. Beim Trennen über den Explorer habe ich den Aufruf dieser Funktion allerdings nicht gefunden. Scheinbar macht er das also irgendwie anders!? Das Problem ist, dass die explorer.exe auch noch für tausend andere Dinge zuständig ist und das Monitoring entsprechend viel aufzeichnet, was mich gar nicht interessiert. Ich habe versucht, mich Stück für Stück manuell durchzuhangeln, habe aber leider nicht gesehen, wo das Laufwerk dann tatsächlich getrennt wird. Ich sehe zwar viele Zugriffe auf das Laufwerk wie MSDN-Library durchsuchenPathGetDriveNumber oder MSDN-Library durchsuchenWNetGetConnection, aber damit alleine komme ich leider nicht weiter. :cry:

einbeliebigername 18. Aug 2015 12:02

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Hallo,

habe jetzt nicht herauslesen können, ob du auch darauf geachtet hast, dass das zu überwachende Explorer-Fenster in einem eigenen Prozess ausgeführt wird. Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen. Ich könnte mir auch vorstellen das die Nachricht an einen anderen Systemprozess geht, und der Explorer über eine andere API davon erfährt. Probiere doch auch mal einen alternativen Dateibrowser wie Total Commander, ob der sich anders verhält oder andere Aktionen auslöst. Auf alle fälle wirst du viele Nachrichten und API-Funktionen durch Recherche und/oder probieren ausschließen müssen, um die Richtige zu finden.

einbeliebigername.

Sir Rufo 18. Aug 2015 12:31

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Zitat:

Zitat von CodeX (Beitrag 1312552)
Und welche Einstellungen genau? "Additional Windows"? Welche Auswahl bei "Messages"?
Und der zweite Teil meiner Frage nach der Deutung der zweiten Message?
Mensch, jetzt lass Dir doch nicht alles aus der Nase ziehen. :-D

Öhm, einfach ein Explorer Fenster ausgewählt (Titellsite des Fensters) und keine Einschränkungen bei den Messages oder so gemacht.

Dieses überwachte Fenster lasse ich dann komplett in Ruhe und arbeite mit einem anderen Explorer-Fesnter um die Aktionen auszuführen.

Nach dem Verbinden eines Netzlaufwerks schaue ich mir die Meldungen an ... aha, so viele
Und nach dem Trennen des Netzlaufwerks speichere ich die Meldungen in eine Datei.

Mehr ist/war da nicht.

CodeX 18. Aug 2015 12:42

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Zitat:

Zitat von einbeliebigername (Beitrag 1312559)
das zu überwachende Explorer-Fenster in einem eigenen Prozess ausgeführt wird

Wie sollte das gehen?

Zitat:

Zitat von einbeliebigername (Beitrag 1312559)
Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen.

Das Ausführen des Explorers unter einem anderen lokalen Benutzer hat bei einem kurzen Test nicht funktioniert.

Zitat:

Zitat von einbeliebigername (Beitrag 1312559)
Probiere doch auch mal einen alternativen Dateibrowser wie Total Commander, ob der sich anders verhält oder andere Aktionen auslöst.

Gleiches Fehlverhalten bei:
  • Total Commander
  • FileZilla
  • "Wizzard" im Explorer: Hauptmenü (ALT-Taste) > Tools > Netzlaufwerk trennen ... > Auswahl
  • Windows API (WNetCancelConnection2)
  • Kommandozeile (net.exe)
  • Aufrufen des Kontextmenüs per API: z.B. per Jcl DisplayContextMenu
  • Aufrufen des Kontextmenüs über die professionelle Komponente "ShellBrowser" von JAM Software

Funktioniert fehlerfrei:
  • Rechtsklick auf Netzlaufwerk im Explorer > Trennen

Das größte Rätsel ist für mich ja weiterhin, warum das Ausführen des Befehls über das Kontextmenü nicht funktioniert, wenn man das Kontextmenü in einer anderen Software aufruft. Ich dachte, das wäre zwar eine Notlösung, muss aber funktionieren, da hier exakt derselbe Kontextmenüpunkt aufgerufen wird. :?

Dalai 18. Aug 2015 13:35

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Zitat:

Zitat von einbeliebigername (Beitrag 1312559)
Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen.

Das funktioniert ohne Klimmzüge ab Vista nicht mehr (ebensowenig wie das Ausführen als Administrator).

@CodeX: Wie hast du beim Total Commander das Netzlaufwerk getrennt? Via Rechtsklick auf die Pfadleiste (um das Kontextmenü des Laufwerks zu bekommen) und dann Klick auf Trennen oder mit Menü Netz > Netzlaufwerk trennen, das den Systemdialog aufruft? Wenn letzteres: was passiert, wenn du im Explorer diesen Dialog ebenfalls bemühst/benutzt?

MfG Dalai

CodeX 18. Aug 2015 13:45

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
@Dalai: Ich habe beide Varianten ausprobiert. Die aus dem Hauptmenü öffnet den gleichen Wizzard wie der Explorer. Bei beiden funktioniert es nicht (siehe auch meine Auflistung im letzten Beitrag). Der Rechtsklick entfernt das Icon auch nicht. Ich nehme an, dass das Kontextmenü auf die gleiche Weise aufgerufen wird, wie ich es zuvor schon versucht habe (ebenfalls siehe Auflistung).

Wie kann denn das Kontextmenü im Explorer ein anderes Ergebnis liefern wie wenn man das Kontextmenü per API in einer anderen Software aufruft?

Edit: Ich möchte kurz darauf hinweisen, dass das Problem nicht nur auf meinem System besteht, sondern bei allen recht einfach reproduzierbar sein sollte. Wer dieses Rätsel mit eigenen Augen sehen möchte, kann dies sehr gerne selbst mal versuchen. Vielleicht packt ja noch jemand anderen der Ehrgeiz, dieses Mysterium zu lösen. Ich würde mich sehr freuen. :)

einbeliebigername 18. Aug 2015 14:44

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Zitat:

Zitat von CodeX (Beitrag 1312563)
Zitat:

Zitat von einbeliebigername (Beitrag 1312559)
das zu überwachende Explorer-Fenster in einem eigenen Prozess ausgeführt wird

Wie sollte das gehen?

In den Ordneroptionen unter Ansicht den Punkt "Ordnerfenster in einem eigenen Prozess starten" anhaken.

Zitat:

Zitat von CodeX (Beitrag 1312563)
Zitat:

Zitat von einbeliebigername (Beitrag 1312559)
Auch könnte ich mir vorstellen, das es helfen könnte, den Explorer als einen anderen Benutzer auszuführen.

Das Ausführen des Explorers unter einem anderen lokalen Benutzer hat bei einem kurzen Test nicht funktioniert.

Zitat:

Zitat von Dalai (Beitrag 1312569)
Das funktioniert ohne Klimmzüge ab Vista nicht mehr (ebensowenig wie das Ausführen als Administrator).

Stimmt. Als anderer Benutzer will der Explorer mit Fehlermeldung nicht mehr. Für als Admin gibt es eine Anleitung http://www.heise.de/ct/hotline/Explo...n-1258468.html.

Zitat:

Zitat von CodeX (Beitrag 1312563)
Zitat:

Zitat von einbeliebigername (Beitrag 1312559)
Probiere doch auch mal einen alternativen Dateibrowser wie Total Commander, ob der sich anders verhält oder andere Aktionen auslöst.

Gleiches Fehlverhalten bei:
  • Total Commander
  • FileZilla
  • "Wizzard" im Explorer: Hauptmenü (ALT-Taste) > Tools > Netzlaufwerk trennen ... > Auswahl
  • Windows API (WNetCancelConnection2)
  • Kommandozeile (net.exe)
  • Aufrufen des Kontextmenüs per API: z.B. per Jcl DisplayContextMenu
  • Aufrufen des Kontextmenüs über die professionelle Komponente "ShellBrowser" von JAM Software

Funktioniert fehlerfrei:
  • Rechtsklick auf Netzlaufwerk im Explorer > Trennen

Habe ich das jetzt richtig erfasst? Du hast mit den oben genannten Programmen das Netzlaufwerk unter der speziellen Bedingung getrennt und der Explorer hat nicht wie erwartet reagiert. Aber wie sieht es bei den anderen Programmen aus? Reagieren die unter der Bedingung und trennen mit einem anderen Programm richtig?

Zitat:

Zitat von CodeX (Beitrag 1312563)
Das größte Rätsel ist für mich ja weiterhin, warum das Ausführen des Befehls über das Kontextmenü nicht funktioniert, wenn man das Kontextmenü in einer anderen Software aufruft. Ich dachte, das wäre zwar eine Notlösung, muss aber funktionieren, da hier exakt derselbe Kontextmenüpunkt aufgerufen wird. :?

Ich glaube langsam du versuchst einen Workaround für einen Bug im Explorer zu finden. Das lässt sich aber mit zwei Explorer-Prozessen testen. Wenn sich nur der Explorer-Prozess korrekt verhält mit dem das Laufwerk getrennt wird, der andere Explorer-Prozess das Fehlverhalten zeigt und alle anderen Programme richtig reagieren, dann ist das ein Bug im Explorer. Sollte aber alle Explorer-Prozesse richtig reagieren, wenn man das mit einem der Explorer trennt, dann gibt es da noch eine Möglichkeit den Explorer nach dem Trennen auf die Sprünge zu verhelfen.

einbeliebigername.

CodeX 18. Aug 2015 15:00

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*
 
Zitat:

Zitat von einbeliebigername (Beitrag 1312573)
In den Ordneroptionen unter Ansicht den Punkt "Ordnerfenster in einem eigenen Prozess starten" anhaken.

Stimmt, das könnte weiterhelfen. Werde ich untersuchen.

Zitat:

Zitat von einbeliebigername (Beitrag 1312573)
Habe ich das jetzt richtig erfasst? Du hast mit den oben genannten Programmen das Netzlaufwerk unter der speziellen Bedingung getrennt und der Explorer hat nicht wie erwartet reagiert. Aber wie sieht es bei den anderen Programmen aus? Reagieren die unter der Bedingung und trennen mit einem anderen Programm richtig?

Erster Teil der Frage: Ja
Zweiter Teil: Bin mir unschlüssig, ob ich deine Frage verstehe. Grunsätzlich ist es so, dass nur der Explorer die verwaisten Laufwerke anzeigt. Nach dem Trennen tauchen diese in anderen Programmen nicht mehr auf. Man kann diese Laufwerke auch direkt im Anschluss per "Netzlaufwerk verbinden" neu zuweisen (der Wizzard zeigt die getrennten Laufwerke auch korrekt als frei an). "Lustigerweise" ändert sich der Name des Laufwerks nicht (bleibt der alte, getrennte), aber das rote X verschwindet und der Speicherkapazitätsbalken ist dann da. Wenn man das Laufwerk jetzt per Rechtsklick trennt, sieht es so aus wie zuvor. Wie das technisch sein kann, weiß ich nicht. Muss man wohl mal mit eigenen Augen gesehen haben.

Zitat:

Zitat von einbeliebigername (Beitrag 1312573)
Ich glaube langsam du versuchst einen Workaround für einen Bug im Explorer zu finden.

Naja, was bleibt mir anderes übrig? Ich möchte Netzlaufwerke aus meiner Software heraus trennen können. Den Anwender interessiert nicht, welche Bugs im Explorer enthalten sind. Er weiß lediglich, wenn er das von Hand macht, dann funktioniert es.

Zitat:

Zitat von einbeliebigername (Beitrag 1312573)
Das lässt sich aber mit zwei Explorer-Prozessen testen. Wenn sich nur der Explorer-Prozess korrekt verhält mit dem das Laufwerk getrennt wird, der andere Explorer-Prozess das Fehlverhalten zeigt und alle anderen Programme richtig reagieren, dann ist das ein Bug im Explorer. Sollte aber alle Explorer-Prozesse richtig reagieren, wenn man das mit einem der Explorer trennt, dann gibt es da noch eine Möglichkeit den Explorer nach dem Trennen auf die Sprünge zu verhelfen.

Soeben getestet: Sowohl im gleichen Prozess als auch bei zwei Fenstern in unterschiedlichen Prozessen (so wie du oben empfohlen hast) verschwindet das Icon SOFORT in beiden Fenstern, wenn man es per Rechtsklick trennt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz