例如,我有一个USB的MODEM,请问怎样在程序里判断它是否已连接或移去?
(在设备管理器中,当一个USB设备加进来的时候,系统会自动显示加进来的设备名,这个动作是否会引起注册表的相应的相应变化?如果要,请问是用哪个键来判断?)
谢谢
(在设备管理器中,当一个USB设备加进来的时候,系统会自动显示加进来的设备名,这个动作是否会引起注册表的相应的相应变化?如果要,请问是用哪个键来判断?)
谢谢
解决方案 »
- vb如何利用TIMER操作多个窗口
- 帮朋友问一个考试的问题,帮忙写两句超级简单的代码,100分
- 求求各位大哥大姐,还是我,还有一个难题我整理了一下(超难超难超难超难)很急的!!,多谢了
- 关于窗体调用,大侠们赶紧来阿
- 数学天才请进!
- 如何判断datagrid的某一行的第几列的数据.
- VB总是不能自动点击 网页的submit 愁死我了 求求老师指点
- 小问题,不过也是挺奇怪的问题。(20数给第一个解答出来的人,实在是提问的太多,没分了)
- 请问有什么工具可以根据Vb的FRM文件得到这个Form中所使用的控件的列表
- API函数建立窗口问题!!!!
- sql问题???
- Ado 连接数据库,然后用recordset来显示数据,怎么就不能显示呢?
class CWinHidden :
public CWindowImpl<CWinHidden, CWindow, CNullTraits>
{
BEGIN_MSG_MAP(CWinHidden)
MESSAGE_HANDLER(WM_DEVICECHANGE, OnDeviceChange)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()
public:
LRESULT OnDeviceChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
OutputDebugString("device changed");
// you can store a pointer to your control class eg pMyControl
//then call pMyControl->OnDeviceChange(...);
return 0;
}
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
RegisterEvent(__FILE__,__LINE__);
return 0;
}
void RegisterEvent(const char* fn,int ln)
{
DEV_BROADCAST_DEVICEINTERFACE header = {0};
header.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
header.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
char tmp[256];
if(NULL==RegisterDeviceNotification(m_hWnd, &header, DEVICE_NOTIFY_WINDOW_HANDLE))
{
sprintf(tmp,"%s:%d RegisterDeviceNotification failed",fn,ln);
}
else
{
sprintf(tmp,"%s:%d RegisterDeviceNotification succeeded",fn,ln);
}
OutputDebugString(tmp);
}
};
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As LongPublic Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As LongPublic Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As LongPublic Const GWL_WNDPROC = (-4)
Public Const WM_DEVICECHANGE = &H219Public glngPrevWndProc As Long
Public Function MyWindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_DEVICECHANGE Then
Select Case wParam
' If device (CD-ROM) arrive...
Case &H8000&
Call Form1.DeviceArrival
' If CD-ROM has ejected...
Case &H8004&
Call Form1.DeviceRemoveComplete
End Select
MyWindowProc = 0
Exit Function
End If
' pass the rest messages onto VB's own Window Procedure
MyWindowProc = CallWindowProc(glngPrevWndProc, hwnd, Msg, wParam, lParam)
End Function