日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

刷新系统托盘(清除死掉的图标)修正版

發(fā)布時(shí)間:2025/5/22 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 刷新系统托盘(清除死掉的图标)修正版 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

刷新系統(tǒng)托盤(pán)(清除死掉的圖標(biāo))修正版??

2009-08-06 18:50:06|??分類: Delphi |??標(biāo)簽: |字號(hào)?訂閱

type
?TOSVersion = (osUnknown, os95, os98, osME, osNT3, osNT4, os2K, osXP, os2K3);
......
function GetOS: TOSVersion;
var
?OS: TOSVersionInfo;
begin
?ZeroMemory(@OS,SizeOf(OS));
?OS.dwOSVersionInfoSize := SizeOf(OS);
?GetVersionEx(OS);
?Result := osUnknown;
?if OS.dwPlatformId = VER_PLATFORM_WIN32_NT then
?begin
???case OS.dwMajorVersion of
?????3: Result := osNT3;
?????4: Result := osNT4;
?????5:
?????begin
???????case OS.dwMinorVersion of
?????????0: Result:= os2K;
?????????1: Result:= osXP;
?????????2: Result:= os2K3;
???????end;
?????end;
???end;
?end
?else if (OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 0) then
???Result := os95
?else if (OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 10) then
???Result := os98
?else if (OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 90) then
???Result := osME
end;

function GetSysTrayWnd(): HWND;
//返回系統(tǒng)托盤(pán)的句柄,適合于Windows各版本
var OS: TOSVersion;
begin
?OS := GetOS;
?Result := FindWindow('Shell_TrayWnd', nil);
?Result := FindWindowEx(Result, 0, 'TrayNotifyWnd', nil);
?if(OS in [osXP, os2K3])then
???Result := FindWindowEx(Result, 0, 'SysPager', nil);
?if(OS in [os2K, osXP, os2K3])then
???Result := FindWindowEx(Result, 0, 'ToolbarWindow32', nil);
end;

procedure RefreshTrayIcon();
//刷新系統(tǒng)托盤(pán)圖標(biāo)
var
hwndTrayToolBar : HWND;
rTrayToolBar : tRect;
x , y : Word;
begin
hwndTrayToolBar := GetSysTrayWnd;

Windows.GetClientRect(hwndTrayToolBar, rTrayToolBar);
for x:=1 to rTrayToolBar.right-1 do
begin
??for y:=1 to rTrayToolBar.bottom-1 do
??begin
????SendMessage(hwndTrayToolBar , WM_MOUSEMOVE, 0, MAKELPARAM(x,y));
??end;
end;
end;

===================================
調(diào)用RefreshTrayIcon()就OK


[筆記](méi)隱藏指定程序的托盤(pán)圖標(biāo)(Delphi版)

突然想到又添加一個(gè)把“瘋狂刷新”的托盤(pán)圖標(biāo)都隱藏的功能。于是百度了半天才弄到一個(gè)還可以的實(shí)現(xiàn)功能。(添加uses CommCtrl;)

procedure HideAllTrace;
var TBHWND: HWND;
??? i, count: Integer;
??? PID, PRC: THandle;
??? Buff: PChar;
??? Info: _TBBUTTON;
??? R: Cardinal;
??? S: array[0..1024] of char;
begin
??? TBHWND := GetSysTrayWnd;
??? if TBHWND = 0 then exit;

??? GetWindowThreadProcessId(TBHWND, @PID);
??? PRC := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False, PID);
??? Buff := VirtualAllocEx(PRC, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
??? count := SendMessage(TBHWND, TB_BUTTONCOUNT, 0, 0); //托盤(pán)中button的個(gè)數(shù),不一定是圖標(biāo)的個(gè)數(shù),有些button是隱藏的。
??? for i := 0 to count - 1 do
??? begin
??????? FillChar(Info, SizeOf(Info), 0);
??????? WriteProcessMemory(PRC, Buff, @Info, SizeOf(Info), R); //消息使用的內(nèi)存空間必須在Shell之內(nèi),所以利用ReadProcessMemoery和WriteProcessMemory。
??????? SendMessage(TBHWND, TB_GETBUTTON, i, Integer(Buff));
??????? ReadProcessMemory(PRC, Buff, @Info, SizeOf(Info), R);

??????? SendMessage(TBHWND, TB_GETBUTTONTEXT, Info.idCommand, Integer(Integer(@Buff[0]) + SizeOf(Info)));
??????? ReadProcessMemory(PRC, Pointer(Integer(@Buff[0]) + SizeOf(Info)), @S[0], SizeOf(S), R);
??????? if pos('瘋狂刷新', StrPas(S)) > 0 then //如果button的TEXT中包含'瘋狂刷新'
??????????? SendMessage(TBHWND, TB_DELETEBUTTON, i, 0); //刪除
??? end;
??? VirtualFreeEx(PRC, Buff, 0, MEM_RELEASE);
??? CloseHandle(PRC);
end;

但終因這個(gè)功能太猥褻,有點(diǎn)你木馬或惡意軟件而沒(méi)有添加到輔助工具里。


總結(jié)

以上是生活随笔為你收集整理的刷新系统托盘(清除死掉的图标)修正版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。