VC中检测USB状态的变化 (zz)
来源:互联网 发布:tpshop源码 编辑:程序博客网 时间:2024/05/18 03:45
本代码可以监测USB状态的变化
启动VC,新建一个MFC的EXE程序,命名为USBListening,选择Dialog bassed,
其余默认,点击Finished
在绿字下面添加如下红色代码
/////////////////////////////////////////////////////////////////////////////
// CUSBListeningDlg message handlers
#i nclude "Dbt.h"
#i nclude <malloc.h>
#i nclude <Rpcdce.h>
#pragma comment(lib,"Rpcrt4.lib")
PVOID g_hNotifyDevNode;
void CUSBListeningDlg::RegisterForDevChange(HWND hDlg, PVOID *hNotifyDevNode)
{
DEV_BROADCAST_DEVICEINTERFACE *pFilterData =
(DEV_BROADCAST_DEVICEINTERFACE*)
_alloca(sizeof(DEV_BROADCAST_DEVICEINTERFACE));
ASSERT (pFilterData);
UUID GUID_CLASS_INPUT;
UuidFromString((unsigned char*)"36FC9E60-C465-11CF-8056-444553540000", &GUID_CLASS_INPUT);
ZeroMemory(pFilterData, sizeof(DEV_BROADCAST_DEVICEINTERFACE));
pFilterData->dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
pFilterData->dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
pFilterData->dbcc_classguid = GUID_CLASS_INPUT;
/*
USB dbcc_classguid :{36FC9E60-C465-11CF-8056-444553540000}
可以在注册表中查询 HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Enum/USB/ROOT_HUB
此键值下面有你的设备列表你可以查到的,只能用那个*/
*hNotifyDevNode = RegisterDeviceNotification(hDlg, pFilterData, DEVICE_NOTIFY_WINDOW_HANDLE);
}
//使用向导,添加DefWindowProc函数
LRESULT CUSBListeningDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DEVICECHANGE:
{
switch (wParam)
{
case DBT_DEVICEARRIVAL:
// Handle device arrival
MessageBox("Handle device arrival");
break;
case DBT_DEVICEQUERYREMOVE:
// Handle device removal request
MessageBox("Handle device removal request");
break;
case DBT_DEVICEREMOVECOMPLETE:
// Handle device removal
MessageBox("Handle device removal");
break;
}
}
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
//在OnInitDialog函数中添加RegisterForDevChange函数
BOOL CUSBListeningDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
RegisterForDevChange(m_hWnd,&g_hNotifyDevNode);
return TRUE; // return TRUE unless you set the focus to a control
}
- VC中检测USB状态的变化 (zz)
- VC中检测USB状态的变化
- vc检测usb设备的拔插状态
- VC中检测设备变化,OnDeviceChange
- 详析VC中坐标系的建立zz
- Android 检测USB连接状态
- VC: 10014系统检测到在一个调用中尝试使用指针参数时的无效指针地址 zz
- Java中线程的状态变化
- Hibernate中实体状态的变化
- MFC 检测USB接口设备连接变化
- Android:检测网络状态&监听网络变化
- Android:检测网络状态&监听网络变化
- Angular的变化检测
- VC检测网络连通状态
- Android中光照传感器的用法,(检测光照强度的变化)
- Hibernate中Entity对象状态的检测
- vue中遇到的坑 --- 变化检测问题(数组相关)
- VC++之随父窗口变化调整控件大小 zz
- Timer,TimerTask简单讲解
- 今天我想测试一下,这个
- 时间管理
- VB C# 语法对比图 (代码实例)
- 40种网站设计常用技巧
- VC中检测USB状态的变化 (zz)
- 昨天用啦ntswitch害死我啦
- 软件相关文档缩略词翻译(translate by 无敌)
- 《programming windows》中讲Unicode的那一章的确讲得十分清晰
- Excel Services OverView系列1:什么是Excel Services
- 转正困惑我的心
- discuz 5.0 爆新漏洞
- HttpWebRequest 登入.text博客系统但是发帖就登出的疑惑
- PowerDesigner 自定义报表输出项