查找记事本窗口 在第一个菜单栏追加id为666名为MyDialog的菜单项
HWND hWnd = FindWindow(L"Notepad",NULL);
HMENU hMenu = GetMenu(hWnd);
AppendMenuW(GetSubMenu(hMenu, 0), MF_STRING, 666, L"MyDialog");
对记事本下WH_GETMESSAGE钩子
auto id = GetWindowThreadProcessId(hWnd, NULL);
hHook = SetWindowsHookExW(WH_GETMESSAGE, WndProc, hInst, id);
在钩子回调拦截WM_COMMAND id为666的消息,调用DialogBox弹出我们的对话框
LRESULT CALLBACK WndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
PCWPSTRUCT pCwp = PCWPSTRUCT(lParam);
PMSG msg = (PMSG)lParam;
if (nCode >= HC_ACTION)
{
if (msg->message == WM_COMMAND)
{
if (LOWORD(msg->wParam)==666)
{
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
}
...
HWND hWnd = FindWindow(L"Notepad",NULL);
HMENU hMenu = GetMenu(hWnd);
AppendMenuW(GetSubMenu(hMenu, 0), MF_STRING, 666, L"MyDialog");
对记事本下WH_GETMESSAGE钩子
auto id = GetWindowThreadProcessId(hWnd, NULL);
hHook = SetWindowsHookExW(WH_GETMESSAGE, WndProc, hInst, id);
在钩子回调拦截WM_COMMAND id为666的消息,调用DialogBox弹出我们的对话框
LRESULT CALLBACK WndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
PCWPSTRUCT pCwp = PCWPSTRUCT(lParam);
PMSG msg = (PMSG)lParam;
if (nCode >= HC_ACTION)
{
if (msg->message == WM_COMMAND)
{
if (LOWORD(msg->wParam)==666)
{
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
}
...