|
USB-Stick Erkennung mit C++ und Delphi-IDE |
|
|
|
|
Mit folgender Routine können Sie mit C++ die Erkennung eines USB-Sticks programmieren. Es handelt sich dabei um eine Umsetzung in der Delphi-IDE.
In die *.h:
public:
char FirstDriveFromMask (ULONG unitmask); //prototype
protected:
void __fastcall WndProc(Messages::TMessage &Message);
In die *.cpp:
#include
// ---------------------------------------------------------------------------
void __fastcall TDatenForm::WndProc(Messages::TMessage &Message) {
// Erkennen des USB-Sticks
switch(Message.Msg) {
case WM_DEVICECHANGE: {
unsigned int Event = Message.WParam;
DWORD dwData = Message.LParam;
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)Message.LParam;
switch(Event) {
case DBT_DEVICEARRIVAL: {
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
USB = FirstDriveFromMask(lpdbv->dbcv_unitmask); // Laufwerksbuchstabe
break ;
}
case DBT_DEVICEREMOVECOMPLETE : {
USB = "" ;
break ;
}
}
Break ;
}
default: ;
}
TForm::WndProc(Message);
}
/* ------------------------------------------------------------------
FirstDriveFromMask (unitmask)
Description
Finds the first valid drive letter from a mask of drive letters.
The mask must be in the format bit 0 = A, bit 1 = B, bit 2 = C,
etc. A valid drive letter is defined when the corresponding bit
is set to 1.
Returns the first drive letter that was found.
-------------------------------------------------------------------- */
char TDatenForm::FirstDriveFromMask(ULONG unitmask) {
char i;
for (i = 0; i < 26; ++i) {
if (unitmask & 0x1)
break;
unitmask = unitmask >> 1;
} return(i + 'A'); }
Probleme oder Fragen? Wir helfen gerne über unsere 24h Hotline: 0171 22 77 77 3.
|
|
Zuletzt aktualisiert am Samstag, 20. Februar 2010 um 19:37 Uhr |