已注册 Window 未收到消息 TaskbarButtonCreated
Registered Window Message TaskbarButtonCreated not received
我想开始查看 Windows 7 任务栏 API。我创建了一个基本的 MFC 对话框项目,但在注册 TaskbarButtonCreated 消息后,它永远不会发送到我的 WindowProc。这是我拥有的:
LRESULT CTaskBarAPITestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == g_wmTBC)
{
AfxMessageBox(_T("Hit the message"));
//This is never hit
}
return CDialogEx::WindowProc(message, wParam, lParam);
}
int CTaskBarAPITestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
g_wmTBC = RegisterWindowMessage(_T("TaskbarButtonCreated"));
//This works fine
return 0;
}
AfxMessageBox
永远不会被击中。我也尝试将 ON_REGISTERED_MESSAGE
添加到我的 MESSAGE_MAP
但该方法也没有被调用。有什么建议吗?
原来我需要以下内容:
ChangeWindowMessageFilterEx(AfxGetMainWnd()->GetSafeHwnd(), g_wmTBC, MSGFLT_ALLOW, NULL);
ChangeWindowMessageFilterEx(AfxGetMainWnd()->GetSafeHwnd(), WM_COMMAND, MSGFLT_ALLOW, NULL);
在我的 OnInitDialog
中。
编辑:
这是因为我是 运行 具有更高权限的应用程序,因此默认情况下不会从较低权限的进程接收消息,除非您使用 ChangeWindowMessageFilterEx
。更多信息:ChangeWindowMessageFilterEx Documentation.
微软也有一些示例代码做同样的事情here on github
我想开始查看 Windows 7 任务栏 API。我创建了一个基本的 MFC 对话框项目,但在注册 TaskbarButtonCreated 消息后,它永远不会发送到我的 WindowProc。这是我拥有的:
LRESULT CTaskBarAPITestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == g_wmTBC)
{
AfxMessageBox(_T("Hit the message"));
//This is never hit
}
return CDialogEx::WindowProc(message, wParam, lParam);
}
int CTaskBarAPITestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
g_wmTBC = RegisterWindowMessage(_T("TaskbarButtonCreated"));
//This works fine
return 0;
}
AfxMessageBox
永远不会被击中。我也尝试将 ON_REGISTERED_MESSAGE
添加到我的 MESSAGE_MAP
但该方法也没有被调用。有什么建议吗?
原来我需要以下内容:
ChangeWindowMessageFilterEx(AfxGetMainWnd()->GetSafeHwnd(), g_wmTBC, MSGFLT_ALLOW, NULL);
ChangeWindowMessageFilterEx(AfxGetMainWnd()->GetSafeHwnd(), WM_COMMAND, MSGFLT_ALLOW, NULL);
在我的 OnInitDialog
中。
编辑:
这是因为我是 运行 具有更高权限的应用程序,因此默认情况下不会从较低权限的进程接收消息,除非您使用 ChangeWindowMessageFilterEx
。更多信息:ChangeWindowMessageFilterEx Documentation.
微软也有一些示例代码做同样的事情here on github