如何使用鉤子在notepad上加上“誠信郵”菜單

來源:互聯網
上載者:User

LRESULT CALLBACK GetMsgProc(int nCode,WPARAM wParam,LPARAM lParam )
{
 if (HC_ACTION == nCode)
 {
  char _module[256];
  GetModuleFileName(NULL, _module, sizeof(_module)); //擷取模組路徑
  if (strstr(_module, "\\notepad.exe"))  //檢查有沒notepad.exe 
  {
   LPMSG lpMsg = (LPMSG)lParam;//擷取訊息
   HMENU hMainMenu= GetMenu(lpMsg->hwnd); //擷取當前視窗的菜單控制代碼 
   if (hMainMenu != NULL)//如果有菜單
   {
    int iCount=GetMenuItemCount(hMainMenu);//擷取菜單的item數
    for (int i = 0; i < iCount; i ++)
    {
     TCHAR szText[255] = "";
     GetMenuString(hMainMenu, i, szText, sizeof(szText), MF_BYPOSITION);//擷取功能表項目的名字
     if (!strcmp(szText, "誠信郵"))//看一下是不是誠信郵
     {
      break;
     }
    }
    if (i >= iCount)//如果沒誠信郵菜單就載入菜單
    {
     HMENU hMenu = LoadMenu(GetModuleHandle("hookhook"), MAKEINTRESOURCE(IDR_HOOK_MENU));//載入菜單
     HMENU hPopupMenu = GetSubMenu(hMenu, 0);//只要第一個菜單
     AppendMenu(hMainMenu, MF_POPUP, (UINT)hPopupMenu, "誠信郵");//添加在主菜單中添加菜單
     //DrawMenuBar(lpMsg->hwnd);
    }
   }
   
  }
 }
 
 return CallNextHookEx(hHook, nCode, wParam, lParam);
}

 

void setHook()
{
 hHook = SetWindowsHookEx ( WH_GETMESSAGE, GetMsgProc, GetModuleHandle("hookhook"), 0);
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.