USB Gerät erkennen...
-
Hallo ich suche eine einfache char Funktion die mir ausgibt wenn ein neues USB-Gerät angeschlossen wurde wie z.b:
bool new_usb_device()
{
[...]
if(new_usb==1)
return true;
else
return false;
}int main();
{
for(;;)
{
if(new_usb_device==true)
cout<<usb_buchstaben<<endl;
Sleep(250);
}
}so ungefähr
Trigger
-
WM_DEVICECHANGE -> DBT_DEVICEARRIVAL -> DBT_DEVTYP_VOLUME
-
ein codebeispiel wäre sehr nett ...
-
Folgt man den Links, liest diese und schaut sich die weiteren Verlinkungen an, findet man zum Thema Media dection and removal:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363215%28v=vs.85%29.aspx
-
ja danke , dass habe ich auchschon gesehn
aber ich weiß nicht welche parameter ich ihn übergeben soll und wie in der praxis so ein programm aussehen würde ...
-
Trigger_ schrieb:
ja danke , dass habe ich auchschon gesehn
aber ich weiß nicht welche parameter ich ihn übergeben soll und wie in der praxis so ein programm aussehen würde ...Wo ist jetzt konkret das Problem ? Welcher Parameter ?
Mit VisualStudio ein Win32-Projekt Gerüst erstellen lassen, den Quelltext von der Seite dazukopieren und zwei Zeilen ergänzen.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { // ab hier dazu schreiben case WM_DEVICECHANGE: Main_OnDeviceChange( hWnd, wParam, lParam );
Ein USB Stick wird zunächst erkannt, aber bei
if (lpdbv -> dbcv_flags & DBTF_MEDIA)
geht noch irgendwas schief ?
Um eine Variable auf true oder false zu setzen wird es aber sicher reichen.
-
und wie würde es bei einer konsollenanwendung aussehen ?
-
Trigger_ schrieb:
und wie würde es bei einer konsollenanwendung aussehen ?
Man kann wohl ein verstecktes Fenster in einem separaten Thread
erzeugen und den Code da einbauen.Ein verstecktes Fenster kann man mit CreateThread erzeugen und als
dwStyle WS_VISIBLE NICHT angeben.Danach mit GetMessage/DispatchMessage Schleife alle einkommenden
Nachrichten verarbeiten.Zum Beenden kann man WM_QUIT an das Fenster senden.
Möglicherweise wäre ein "Message-Only Window" geeignet.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632599(v=vs.85).aspx
To create a message-only window, specify the HWND_MESSAGE constant or a handle
to an existing message-only window in the hWndParent parameter of the CreateWindowEx
function.Das Problem hatten wohl schon einige lt. Google.