usb장치가 연결되었을때 발생하는 메세지 App에서 WM_DEVICECHANGE라는 메세지를 처리하시면 됩니다... ^^
레지스트리 HKEY_LOCAL_MACHINESYSTEMControlSet001ControlClass{36FC9E60-C465-11CF-8056-444553540000} HKEY_LOCAL_MACHINESYSTEMControlSet001EnumUSBVid_0e51&Pid_05005&b114931&0&2 쪽을 보면 각 usb의 정보를 볼수있다. 단 이정보는 윈도우2000 Ad Server에서 찾은것이다. 98,me,XP는 잘 모르겠다.-_-;
WM_DEVICECHANGE 메시지는 받아들였구요... DBT_DEVICEARRIVAL 메시지를 받아들이려고 하는데....
App에서 WM_DEVICECHANGE라는 메세지를 처리하시면 됩니다... ^^
레지스트리
HKEY_LOCAL_MACHINESYSTEMControlSet001ControlClass{36FC9E60-C465-11CF-8056-444553540000}
HKEY_LOCAL_MACHINESYSTEMControlSet001EnumUSBVid_0e51&Pid_05005&b114931&0&2
쪽을 보면 각 usb의 정보를 볼수있다.
단 이정보는 윈도우2000 Ad Server에서 찾은것이다.
98,me,XP는 잘 모르겠다.-_-;
WM_DEVICECHANGE 메시지는 받아들였구요...
DBT_DEVICEARRIVAL 메시지를 받아들이려고 하는데....
DBT_DEVICEARRIVAL는 어딜로 들어오나요?
-_-;;
hHookUsb=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)UsbFunc,hInstance,0);
을 한 뒤에....
LRESULT CALLBACK UsbFunc (int nCode,WPARAM wParam,LPARAM lParam)
{
MSG *msg;
msg = (MSG*)lParam;
if (msg->message == WM_DEVICECHANGE && msg->wParam == DBT_DEVICEARRIVAL)
{
AfxMessageBox("들어왔군");
}
if (msg->message == WM_DEVICECHANGE && msg->lParam == DBT_DEVICEREMOVECOMPLETE)
{
AfxMessageBox("나갔군");
}*/
return CallNextHookEx((HHOOK) hHookUsb,(int) nCode,(WPARAM) wParam,(LPARAM) lParam);
}
하면 안되요....ㅠㅠ
DBT_DEVICEARRIVAL 는 어디서 봐야 하는지...-_-;;
wParam으로 들어온다고 들었던 것 같은데...
USB 장치에는 오토런 기능이 없는 것으로 알고 있습니다..
CD같은 경우는 되는데..
USB를 꽂았을때..
특정 프로그램을 실행 시키려면..
WM_DEVICECHANG 메세지를 이용하셔야 합니다..
USB 가 꽂이거나 빠질때.. 이 메세지가 발생 합니다..
이 메세지를 잡아서 처리해주여야 합니다..
DDK 예제 중에 이런 비슷한 것 있습니다..
참고하면 도움 될것입니다..
그럼~~