Registriert seit: 24. Sep 2010
737 Beiträge
|
Devicechange aus Service mitbekommen
10. Mai 2012, 10:09
Tag allerseits,
Ich bin einfach nur am verzweifeln.
Ich habe mir eine Button1 anwendung gemacht, welche WM_DEVICECHANGE behandelt. Ich kann jetzt ohne probleme erkennen ob ein USB datenträger, Netzlaufwerk angeschlossen oder eine CD/DVD eingelegt wurde. ich bekomme ebenfalls Infos wie Laufwerksbuchstaben raus.
Das ganze in einen Dienst gepackt und schon geht rein gar nichts mehr.
Ok ist klar, dienste haben in der Regel kein Fenster.
RegisterDeviceNotification ausprobiert, bringt aber rein gar nichts. Ich bekomme zwar mit das sich was geändert hat, aber keinerlei informationen was genau(z.B ob und welches Volume). Das bringt mich nicht weiter.
(Es sei denn ich habe bei dieser Methode etwas entscheidendes übersehen).
Also die schmutzige methode. Dienst erstellt einfach ein Fenster und lässt ne Messageloop laufen. Klasse ich finde jetzt wieder wie bei der Button1 anwendung raus was mit USB Volumes passiert und bekomme die entsprechenen informationen. ich kann ja jetzt wieder über WM_DEVICECHANGE arbeiten.
Tja zu früh gefreut, denn aus irgendeinem grund wird keine WM_DEVICECHANGE empfangen, wenn es sich um eine CD/DVD oder ein Netzlaufwerk handelt(?).
Was ich brauche an informationen:
Wurde ein Volume angeschlossen/eingesteckt?(Sowohl USB als auch Netzlaufwerk und CD/DVD)
Welchen Laufwerksbuchstaben ist diesem zugeordnet?
Ich wäre wirklich sehr froh, wenn mir jemand nen schubser in die richtige Richtung geben könnte.
Hintergrund:
Ich arbeite gerade in der Gruppe an einem Projekt, bei dem es darum geht unerwünschte Datenträger wieder rauszuschubsen(ja es muss ein dienst sein). In der Button1 anwendung alles prima, im Dienst leider nicht mehr.
Ich brauche keine Komplettlösung, aber ein Hint zu nützlichen Dokus/Infos wäre klasse.
MFG
Memnarch
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
|