DLL的线程中创建WINDOWS窗口并接收U盘移动磁盘查入消息
来源:互联网 发布:家庭收支知多少 编辑:程序博客网 时间:2024/04/27 00:36
这个问题注意以下几个关键点
1.DLL的句柄的传入
2.线程中的消息循环
HINSTANCE g_hInstance;TCHAR U[2]; //保存U盘的盘符 TCHAR FirstDriveFromMask(ULONG unitmask) { char i; for (i = 0; i < 26; ++i) { if (unitmask & 0x1)//看该驱动器的状态是否发生了变化 break; unitmask = unitmask >> 1; } return (i + 'A'); }LRESULT OnDeviceChange(HWND hwnd,WPARAM wParam, LPARAM lParam) { PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam; if (wParam==DBT_DEVICEARRIVAL) { if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME) { PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb; U[0]=FirstDriveFromMask(lpdbv ->dbcv_unitmask);//得到u盘盘符 U[1]=':';U[2]='\0';MessageBox(0,U,_T("Notice!"),MB_OK); } } if (wParam==DBT_DEVICEREMOVECOMPLETE) { //设备删除 } return LRESULT(); }LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam) { switch(message) { case WM_DEVICECHANGE: OnDeviceChange(hwnd,wParam,lParam); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }DWORD WINAPI mythread_create_windows(LPVOID lparam){static TCHAR szAppName[]=TEXT ("UUUUUU"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style =0; wndclass.lpfnWndProc =WndProc; wndclass.cbClsExtra =0; wndclass.cbWndExtra =0; wndclass.hInstance =g_hInstance; wndclass.hIcon =0; wndclass.hCursor =0; wndclass.hbrBackground =0; wndclass.lpszMenuName =NULL; wndclass.lpszClassName =szAppName; if (!RegisterClass (&wndclass)) { MessageBox (NULL,TEXT("Program requires Windows NT!"),szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindow (szAppName, NULL, WS_DISABLED, 0, 0, 0, 0, NULL, NULL, g_hInstance, NULL); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return 0;}BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){g_hInstance=(HINSTANCE)hModule;switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:OutputDebugStringA("DLL_PROCESS_ATTACH ENTER");//CreateThread(NULL,NULL,mythread,NULL,NULL,NULL);CreateThread(NULL,NULL,mythread_create_windows,NULL,NULL,NULL);OutputDebugStringA("DLL_PROCESS_ATTACH END");break;case DLL_THREAD_ATTACH:break;case DLL_THREAD_DETACH:break;case DLL_PROCESS_DETACH:break;}return TRUE;}
- DLL的线程中创建WINDOWS窗口并接收U盘移动磁盘查入消息
- DLL的线程中创建WINDOWS窗口并接收U盘移动磁盘插入消息
- Windows(WinAPI)窗口创建后,依次接收的消息
- windows 无窗口线程消息接收
- win32 的DLL中创建windows窗口
- win32 创建仅接收消息的窗口
- c# 创建只接收消息的窗口
- Java窗口如何接收并处理windows消息
- 关于dll中接收消息的问题
- Android中消息机制初探(创建一个可以接收消息的子线程)
- DLL中创建窗口
- 在DLL中接收系统消息的办法
- 窗口过程接收的消息
- Windows中窗口消息
- Windows下USB磁盘开发系列三:枚举系统中U盘、并获取其设备信息
- Windows下USB磁盘开发系列一:枚举系统中U盘的盘符
- 欺骗windows---消息处理:移动窗口
- Windows窗口程序从创建到关闭产生的消息
- 真有人做p2p,在embedded platform上?
- CMMI-软件项目功能点估算方法
- 工厂方法模式
- wireshark功能模块分析
- SQLITE 修改表结构
- DLL的线程中创建WINDOWS窗口并接收U盘移动磁盘查入消息
- mysql初始密码设置
- 软件开发流程
- Java 内部类以及匿名内部类
- 安排任何任务都应该考虑的10件事情
- 打开含avi格式视频文件的文件夹“死机”问题的解决
- 精品课程生成系统之后台维护说明
- 第83章、Service之一(从零开始学Android)
- Java网络编程基础