感谢mwy654321(无条件为你)了其实都是别人发贴提的问题1、隐藏和恢复托盘区任一个图标(如“音量”):
(原问题在http://topic.csdn.net/u/20080412/22/5fb2b4f2-3409-4aeb-b815-2f4f7afe46e0.html) 我用SendMessage(hWnd, TB_BUTTONCOUNT, 0, 0)可以成功返回图标的个数
但是SendMessage(hWnd, TB_HIDEBUTTON, 音量图标的ID, 0);却无法隐藏,总是隐藏最右一个图标(NOD32杀毒软件) 请教您是如何实现的?
2、(原问题在)http://topic.csdn.net/u/20080409/14/2d43492c-725a-43db-ab44-4f3bec08760c.html 请问,如果不用全局鼠标钩子,如何实现?(全局钩子的方法我可以做,就不必回答了)谢谢!全当我替上述二贴的提问者加分了。顺便为我解惑
再次感谢!^_^
(原问题在http://topic.csdn.net/u/20080412/22/5fb2b4f2-3409-4aeb-b815-2f4f7afe46e0.html) 我用SendMessage(hWnd, TB_BUTTONCOUNT, 0, 0)可以成功返回图标的个数
但是SendMessage(hWnd, TB_HIDEBUTTON, 音量图标的ID, 0);却无法隐藏,总是隐藏最右一个图标(NOD32杀毒软件) 请教您是如何实现的?
2、(原问题在)http://topic.csdn.net/u/20080409/14/2d43492c-725a-43db-ab44-4f3bec08760c.html 请问,如果不用全局鼠标钩子,如何实现?(全局钩子的方法我可以做,就不必回答了)谢谢!全当我替上述二贴的提问者加分了。顺便为我解惑
再次感谢!^_^
明明看到有2条回复,却打不开.....只好回个贴再看.....
begin
result := FindWindow('Shell_TrayWnd',nil);
result := FindWindowEx(result,0,'TrayNotifyWnd',nil);
result := FindWindowEx(result,0,'SysPager',nil);
result := FindWindowEx(result,0,'ToolbarWindow32',nil);
end;procedure FreeIcon;
var
ShellHandle: THandle;
PID: THandle;
PRC: THandle;
Buff: pchar;
i,Count: integer;
Info: _TBBUTTON;
R: Cardinal;
S: array[0..1024] of char;
begin
ShellHandle := GetSysTrayWnd; //得到托盘处句炳
GetWindowThreadProcessId(ShellHandle, @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(ShellHandle, TB_BUTTONCOUNT, 0, 0);
for i := 0 to Count - 1 do
begin
FillChar(Info, SizeOf(Info), 0);
WriteProcessMemory(PRC, Buff, @Info, SizeOf(Info), R);
SendMessage(ShellHandle, TB_GETBUTTON, i,integer(Buff));
ReadProcessMemory(PRC, Buff, @Info, SizeOf(Info), R);
SendMessage(ShellHandle, TB_GETBUTTONTEXT, Info.idCommand, integer(integer(@Buff[0]) + SizeOf(Info)));
ReadProcessMemory(PRC, Pointer(integer(@Buff[0]) + SizeOf(Info)), @S[0], SizeOf(S), R);
SendMessage(ShellHandle,TB_HIDEBUTTON,i,1); //改成SendMessage(ShellHandle,TB_HIDEBUTTON,i,0)就是显示了
SendMessage(ShellHandle, TB_AUTOSIZE, 0, 0)
end;
VirtualFreeEx(PRC, Buff, 0, MEM_RELEASE);
CloseHandle(PRC);
end;
http://www.why100000.com/Htmls/_bian_cheng_zhuan_qu435.htm
嗯,是的,那段代码网上流传很广的,我一直没有调试通过并且现在仍然有点问题就是:在SendMessage(hWnd, TB_BUTTONCOUNT, 0, 0)返回的图标个数中,包括被系统隐藏的几个图标----这些图标是?它们所在的位置顺序是?但已经结贴了,我将在以后再提问。
谢谢二位
另外,注意,我刚刚看了下mwy654321的代码
他的代码并不能隐藏托盘的图标,只不过是得到托盘而已。
代码,我没有测试清楚!是可以隐藏的!但是有的图标我还是没有隐藏成功!遗憾!