Usb detection

Soyez le premier à donner votre avis sur cette source.

Vue 11 548 fois - Téléchargée 1 472 fois

Description

Detection, insertion ou enlever une clef usb
et lance un message vs 2008 c+ win32

je reussi pas a bien determiner

la lettre du drive usb inserer

si quelqu un a une solution!

Source / Exemple :


dans le zip!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
lundi 27 juillet 2009
Statut
Membre
Dernière intervention
24 août 2009

#include<windows.h>
#include<stdio.h>
#include<dbt.h>
#define mbox(tst) MessageBox(0,tst,"USB detection",16)
HINSTANCE hinst=0;
DWORD init=0;
LRESULT CALLBACK WinProc(HWND,UINT uMsg,WPARAM,LPARAM);

char wclass[]="MyClass_Ex";
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE phInstance,LPSTR cmd,int shcmd)
{
HWND hwnd;
MSG msg;
WNDCLASSEX wndClass;
hinst=hInstance;
wndClass.cbSize=sizeof(WNDCLASSEX);
wndClass.style=0;
wndClass.lpfnWndProc=WinProc;
wndClass.cbClsExtra=wndClass.cbWndExtra=0;
wndClass.hInstance=hInstance;
wndClass.hIcon=LoadIcon (NULL, IDI_APPLICATION);
wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndClass.hbrBackground=(HBRUSH) COLOR_BACKGROUND;
wndClass.lpszMenuName=0;
wndClass.lpszClassName=wclass;
wndClass.hIconSm=LoadIcon (NULL, IDI_APPLICATION);
FreeConsole();
if(!RegisterClassEx(&wndClass))
{
MessageBoxA(0,"class","l",16);
return 0;
}
hwnd=CreateWindowExA(0,wclass,"USB Detection [Said Bouchkaren Maroc]",WS_OVERLAPPEDWINDOW,0,0,450,400,0,NULL,hInstance,NULL);
ShowWindow(hwnd,shcmd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LRESULT CALLBACK WinProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_DEVICECHANGE:
{
char ts[20];
DWORD drv=0;
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
PDEV_BROADCAST_VOLUME lpdbv;
int m=0;
DWORD hlp;
ts[0]=0;
switch(wParam)
{
case DBT_DEVICEARRIVAL:
drv=GetLogicalDrives();
for(m=0;m<29&&(drv>>m)!=(init>>m);m++);
lpdbv=(PDEV_BROADCAST_VOLUME)lpdb;
sprintf (ts, "Drive %c:\\ was inserted\n",m-1+'A');
mbox(ts);
init=drv;
break;
case DBT_DEVICEREMOVECOMPLETE:
drv=GetLogicalDrives();
for(m=0;m<29&&(drv>>m)!=(init>>m);m++);
lpdbv=(PDEV_BROADCAST_VOLUME)lpdb;
sprintf (ts, "Drive %c:\\ was removed\n",m-1+'A');
mbox(ts);
init=drv;
break;
}

}
break;

default : return DefWindowProc(hWnd,uMsg,wParam,lParam);
}
return 0;
}
Messages postés
240
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
22 mars 2009

sylvain908 << franchement ce genre de commentaire ne fait pas avancer du tout.

abandonware << la méthode n'est franchement pas efficace, la manière dont tu as codé l'application serait plus efficace en vb.

En C :
Le plus rapide (à mon avis) est d'utiliser une énumération des lecteurs, lors de la modification de la liste des lecteurs, tu vérifies le type du lecteur ajouté.
Maintenant il existe surement une autre méthode mais je trouve celle ci efficace, je l'avais utilisé pour un leecher USB (copie du contenu d'une clé usb dés son insertion (il existe de nombreuses sources)
la mienne: http://omni.a.free.fr/app.html (USBLEECH)

bon codage :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.