Ich habe einige Computer mit einem vereinfachten Windows in dem Speichergeräte, die hinzugefügt/entfernt werden nicht automatisch Laufwerksbuchstaben erhalten. Also muss ich einen Weg finden zu erkennen, dass hinzugefügt/entfernt werden. Ein Weg (den ich kenne) ist mit WM_DEVICECHANGE Nachricht. Auf diesen Computern wird die Nachricht nur mit WParam 7 und LParam 0 an Fenster gesendet. So könnte ich meinen Erkennungscode ausführen, wenn diese Nachricht von meiner Anwendung empfangen wird. Das Problem ist, dass es einige Zeit braucht, bis das Gerät vollständig erkannt wurde. Zwischenzeitlich wird meine Anwendung mit einer "Salve" von WM_DEVICECHANGE-Nachrichten "bombardiert" und der Erkennungscode wird sogar 6,7-mal gestartet. Zum Lösen könnte ich einen Timer hinzufügen, der durch eine neue Nachricht neu initialisiert wird; Wenn nach einiger Zeit (1..2 sec) die Anwendung die Nachricht nicht empfängt, wird der Erkennungscode gestartet. Aber ich mag diesen Ansatz nicht 100%, weil es andere Faktoren nicht berücksichtigt wie: die Geschwindigkeit des Computers, andere Programme, die Windows verlangsamen, verschiedene Speichergerätetypen usw. Und die Tatsache, dass der Erkennungscode endet Nach einer Verzögerung ist es ein bisschen nervig.wie erkennen, dass Windows beendet Hinzufügen/Entfernen von Speichergeräten (nicht als Laufwerkbuchstaben, nur als Geräte)
Kennt jemand eine professionellere Lösung ...?
Vielen Dank für jede Hilfe.
Ich habe noch nichts ähnliches getan, aber schaue auf Shell-Ereignisse, mit Shell können Sie auch benachrichtigt werden (nur einmal/Aktion), wenn eine Datei entfernt, geändert, geändert, etc. Ich bin sicher, dass Sie kann auf msdn etwas Nützliches finden und dann Leute bitten, den Code nach Delphi zu konvertieren, wenn Sie nicht mit der Syntax (VC) oder dem Äquivalent von C# zu Delphi vertraut sind. – ComputerSaysNo
@Dorin, Ok, ich weiß, ich kann schauen und suchen, aber ich habe das schon getan und habe nichts und ich kam hier um Hilfe ... –