第一步:定义消息。
#define WM_MY_MESSAGE (WM_USER+100)
第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT
LRESULT C Dlg::OnMyMsg(WPARAM wParam, LPARAM lParam)
{
return 0
}
第三步:在类头文件的AFX_MSG块中说明消息处理函数。
virtual BOOL OnInitDialog()
afx_msg void OnSysCommand(UINT nID, LPARAM lParam)
afx_msg void OnPaint()
afx_msg HCURSOR OnQueryDragIcon()
afx_msg LRESULT OnMyMsg(WPARAM, LPARAM) //复制这里
DECLARE_MESSAGE_MAP()
第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中。
BEGIN_MESSAGE_MAP(C自动填表Dlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_MY_MESSAGE, OnMyMsg)//复制这里
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
1.建一个windows窗体程序(用vc那个hello world就行了),并在创建的时候,去掉WM_VISIBLE标志,作为监控程序,并注册WM_DEVICECHANGEP消息的监控,然后当收到WM_DEVICECHANGEP消息的时候,发送给控制台程序。这个办法最简单。2.用子类化,写一个dll,注入到“桌面”这个进程去,然后对“桌面”进行子类化,然后在你的dll里,注册对WM_DEVICECHANGEP消息的监控,并在你的写给“桌面”的WndProc里拦载WM_DEVICECHANGEP消息。
3.用全局的消息钩子
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)