Chinaunix首页 | 论坛 | 博客
  • 博客访问: 326847
  • 博文数量: 64
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 589
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-08 15:50
文章分类

全部博文(64)

文章存档

2015年(52)

2014年(3)

2013年(9)

我的朋友

分类: WINDOWS

2015-07-22 11:00:05

#include <windows.h>
#include <dbt.h>
#include <stdio.h>
#include <math.h>
LRESULT CALLBACK WndProc(HWND h, UINT msg, WPARAM wp, LPARAM lp)
{
    if (msg == WM_DEVICECHANGE) {
        if ((DWORD)wp == DBT_DEVICEARRIVAL) {
            DEV_BROADCAST_VOLUME* p = (DEV_BROADCAST_VOLUME*) lp;
            if (p->dbcv_devicetype == DBT_DEVTYP_VOLUME) {
                int l = (int)(log(double(p->dbcv_unitmask)) / log(double(2)));
                printf("啊……%c盘插进来了\n", 'A' + l);
            }
        } else if ((DWORD)wp == DBT_DEVICEREMOVECOMPLETE) {
            DEV_BROADCAST_VOLUME* p = (DEV_BROADCAST_VOLUME*) lp;
            if (p->dbcv_devicetype == DBT_DEVTYP_VOLUME) {
                int l = (int)(log(double(p->dbcv_unitmask)) / log(double(2)));
                printf("啊……%c盘被拔掉了\n", 'A' + l);
            }
        }
        return TRUE;
    } else return DefWindowProc(h, msg, wp, lp);
}
int main() {
    WNDCLASS wc;
    ZeroMemory(&wc, sizeof(wc));
    wc.lpszClassName = TEXT("myusbmsg");
    wc.lpfnWndProc = WndProc;
     
    RegisterClass(&wc);
    HWND h = CreateWindow(TEXT("myusbmsg"), TEXT(""), 0, 0, 0, 0, 0,
        0, 0, GetModuleHandle(0), 0);
    MSG msg;
    while( GetMessage(&msg, 0, 0, 0) > 0 ) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
阅读(4471) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~