隐藏托盘图标

  1. #include <atlbase.h>
  2. #include <atlconv.h>
  3. #pragma comment(lib, "LIBCMTD.LIB")
  4. VOID ShowTrayIcon(TCHAR *szIcon)
  5. {
  6.     HWND hwnd, hwndPager;
  7.     ULONG lngPid;
  8.     LONG ret, lngButtons;
  9.     HANDLE hProcess;
  10.     LPVOID lngAddress;
  11.     LONG lngTextAdr,lngHwndAdr,lngHwnd,lngButtonID;
  12.     TCHAR strBuff[1024] = {0};
  13.     TCHAR *pp = NULL, *str = NULL;
  14.     hwnd = FindWindow("Shell_TrayWnd", NULL);
  15.     hwnd = FindWindowEx(hwnd, 0, "TrayNotifyWnd", NULL);
  16.     hwndPager = FindWindowEx(hwnd, 0, "SysPager", NULL);
  17.     if (hwndPager)
  18.         hwnd = FindWindowEx(hwndPager, 0, "ToolbarWindow32", NULL);
  19.     else
  20.         hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", NULL);
  21.     ret = GetWindowThreadProcessId(hwnd, &lngPid);
  22.     hProcess = OpenProcess(
  23.         PROCESS_ALL_ACCESS | 
  24.         PROCESS_VM_OPERATION | 
  25.         PROCESS_VM_READ | 
  26.         PROCESS_VM_WRITE, 0, lngPid
  27.         );
  28.     lngAddress = VirtualAllocEx(hProcess, 0, 0x4096, MEM_COMMIT, PAGE_READWRITE);
  29.     lngButtons = SendMessage(hwnd, TB_BUTTONCOUNT, 0, 0);
  30.     for (int i = 0; i < lngButtons - 1; i++)
  31.     {
  32.         ret = SendMessage(hwnd, TB_GETBUTTON, i, LONG(lngAddress));
  33.         ret = ReadProcessMemory(hProcess, LPVOID(LONG(lngAddress) + 16), &lngTextAdr, 4, 0);
  34.         if (lngTextAdr != -1)
  35.         {
  36.             ret = ReadProcessMemory(hProcess, LPVOID(lngTextAdr), strBuff, 1024, 0);
  37.             ret = ReadProcessMemory(hProcess, LPVOID(long(lngAddress) + 12), &lngHwndAdr, 4, 0);
  38.             ret = ReadProcessMemory(hProcess, LPVOID(lngHwndAdr),&lngHwnd, 4, 0);
  39.             ret = ReadProcessMemory(hProcess, LPVOID(long(lngAddress) + 4), &lngButtonID, 4, 0);
  40.             USES_CONVERSION;
  41.             str = OLE2T((LPOLESTR)(strBuff));
  42.             pp = _tcsstr(str, szIcon);
  43.             if (pp != NULL)
  44.                 SendMessage(hwnd,TB_HIDEBUTTON,lngButtonID,TRUE);
  45.         }
  46.     }
  47.     VirtualFreeEx(hProcess, lngAddress, 0x4096, MEM_RELEASE);
  48.     CloseHandle(hProcess);
  49. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值