Einzelnen Beitrag anzeigen

blackfin
(Gast)

n/a Beiträge
 
#7

AW: Programm öffnen, wenn USB Stick raus

  Alt 1. Jul 2010, 02:29
Ich hab mal im Schnellverfahren eine kleine Komponente draus gekloppt und hier angehängt.
Ein Package für D2006 / TurboDelphi ist mit drin, ansonsten halt selbst ein neues erzeugen.
Ein Demo-Projekt ist auch mit dabei.

Anleitung:
1) Komponente installieren
2) Neues Projekt erstellen
3) Komponente draufziehen
4) Ereignisse zuweisen:

OnDeviceMounted(ADrive:Char; ADriveName:string); wird ausgelöst, wenn ein Device gemounted wird, in ADrive steht der Laufwerkbuchstabe, in ADrivename der Name der Volume.

In diesem Event könntest du jetzt z.B. abfragen, ob ADrivename "Stick" ist und dann C:\Programm.exe beenden, wenns denn läuft:
Handle von C:\Programm.exe rausfinden und eine WM_CLOSE senden.


OnDeviceUnmounted(ADrive:Char; ADriveName:string); wird ausgelöst, wenn ein Device entfernt wird, in ADrive steht der Laufwerkbuchstabe, in ADrivename der Name der Volume.
Der Volume-Name kommt hierbei aus dem zuvor ermittelten VolumeName-Cache.
Dieser wird immer aktualisiert, sobald sich die Volumes im System ändern, beim Mounted vor dem Event, beim Unmounted danach.

In diesem Event könntest du jetzt z.B. abfragen, ob ADrivename "Stick" ist und dann C:\Programm.exe ausführen:
if (ADriveName = 'Stick') then ShellExecute(self.Handle,nil,PChar('C:\Programm.ex e'),nil,nil,SW_SHOW);


Anregungen und auch wenns nötig Beschimpfungen sind erwünscht
Das ganze Ding ist wirklich schnell zusammengekloppt worden...
Getestet is es derzeit nur unter Win7 x64.
Angehängte Dateien
Dateityp: zip ehXDeviceChange.zip (648,9 KB, 51x aufgerufen)

Geändert von blackfin ( 1. Jul 2010 um 03:25 Uhr)
  Mit Zitat antworten Zitat