|
여기 저기 사이트 뒤지니 아래와 같은 방법으로 등록하면 된답니다.
그러나 소스에 어떻게 추가하여 할지 모르겠네요
혹 경험있으신 분들 advice좀 ... 샘플소스면 더할나위없이 좋습니다.~~
/////
static GUID GUID_DEVINTERFACE_USB_DEVICE =
{ 0x745A17A0, 0x74D3, 0x11D0, { 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA } };
DEV_BROADCAST_DEVICEINTERFACE deviceFilter;
HDEVNOTIFY m_hDeviceNotify;
ZeroMemory(&deviceFilter, sizeof(deviceFilter));
deviceFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
deviceFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
deviceFilter.dbcc_reserved = 0;
deviceFilter.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;
deviceFilter.dbcc_name[0] = 0;
m_hDeviceNotify = RegisterDeviceNotification(m_hWnd, &deviceFilter,DEVICE_NOTIFY_WINDOW_HANDLE);
////
happymin 님이 쓰신 글 :
: 해보지는 않았지만 다른 장치들이 체크 되는건 아닐까요?
:
: DBT_DEVTYP_OEM = $00000000; // oem-defined device type
: DBT_DEVTYP_DEVNODE = $00000001; // devnode number
: DBT_DEVTYP_VOLUME = $00000002; // logical volume
: DBT_DEVTYP_PORT = $00000003; // serial, parallel
: DBT_DEVTYP_NET = $00000004; // network resource
: DBT_DEVTYP_DEVICEINTERFACE = $00000005; // device interface class
: DBT_DEVTYP_HANDLE = $00000006; // file system handle
:
: 초보남 님이 쓰신 글 :
: : 안녕하세요
: : 동작 중에 케이블이 빠질경우 아래와 같은 윈도우 메시지를 이용하여 comport를 제어할려 합니다.
: : 그런데 케이블이 빠지거냐 연결될 경우 Message.WParam가 항상 0x07되네요 일단은 이벤트가 발생시
: : 무조건 comport close되도록 아래와 소스와 같이 작업하였습니다.
: :
: : 여기서 문제가 발생되었는데 정상 통신 동작중에서 이벤트가 가끔씩 발생되어 이벤트가
: : 발생(Message.WParam=> 0x07)되어 comport를 close하는 것입니다. 여기저기 아무리 찾아봐도 해결점이
: : 안보이네요
: :
: : /////////////////////////////////////////////////////////////////////////////////
: : void __fastcall TForm1::OnMessages(Messages::TMessage &Message)
: : {
: : switch(Message.Msg)
: : {
: : case WM_DEVICECHANGE:
: : switch(Message.WParam)
: : {
: : case DBT_DEVICEARRIVAL :
: : // CheckPort(); break;
: : case DBT_DEVICEREMOVECOMPLETE :
: : // ComPort1->Close(); break;
: : }
: : Serial1->Close();
: : Connect->Click();
: : Message.Result = true;
: : break;
: : default:
: : TForm::WndProc(Message);
: : }
: : }
|