Hide the system tray icon (tray) through Delphi

From , 5 Years ago, written in Delphi (Object Pascal), viewed 86 times.
URL https://pastebin.vip/view/42082496
  1. procedure HideAllTrace;
  2. var TBHWND: HWND;
  3.     i, count: Integer;
  4.     PID, PRC: THandle;
  5.     Buff: PChar;
  6.     Info: _TBBUTTON;
  7.     R: Cardinal;
  8.     S: array[0..1024] of char;
  9. begin
  10.     TBHWND := GetSysTrayWnd;
  11.     if TBHWND = 0 then exit;
  12.  
  13.     GetWindowThreadProcessId(TBHWND, @PID);
  14.     PRC := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False, PID);
  15.     Buff := VirtualAllocEx(PRC, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
  16.     count := SendMessage(TBHWND, TB_BUTTONCOUNT, 0, 0); //托盘中button的个数,不一定是图标的个数,有些button是隐藏的。
  17.     for i := 0 to count - 1 do
  18.     begin
  19.         FillChar(Info, SizeOf(Info), 0);
  20.         WriteProcessMemory(PRC, Buff, @Info, SizeOf(Info), R); //消息使用的内存空间必须在Shell之内,所以利用ReadProcessMemoery和WriteProcessMemory。
  21.         SendMessage(TBHWND, TB_GETBUTTON, i, Integer(Buff));
  22.         ReadProcessMemory(PRC, Buff, @Info, SizeOf(Info), R);
  23.  
  24.         SendMessage(TBHWND, TB_GETBUTTONTEXT, Info.idCommand, Integer(Integer(@Buff[0]) + SizeOf(Info)));
  25.         ReadProcessMemory(PRC, Pointer(Integer(@Buff[0]) + SizeOf(Info)), @S[0], SizeOf(S), R);
  26.         if pos('疯狂刷新', StrPas(S)) > 0 then //如果button的TEXT中包含'疯狂刷新'
  27.             SendMessage(TBHWND, TB_DELETEBUTTON, i, 0); //删除
  28.     end;
  29.     VirtualFreeEx(PRC, Buff, 0, MEM_RELEASE);
  30.     CloseHandle(PRC);
  31. end;
  32. //delphi/8954

Reply to "Hide the system tray icon (tray) through Delphi"

Here you can reply to the paste above

captcha

https://burned.cc - Burn After Reading Website