如何隐藏系统托盘上的图标?(30分)

  • 主题发起人 主题发起人 kim_fu
  • 开始时间 开始时间
关注。。
 
难道真的没人能解决这个问题吗?我再加200分。<br>有个软件做得很好,叫SystrayX,可以隐藏任意托盘图标。
 
试一下搜索Tray的控件列表,看行不行。<br>关注
 
使用Shell_NotifyIcon函数可以,不过前提你必须知道这个图标所属的进程的句柄,可以使用FindWindows以及其他的来找到。<br>以前也讨论过这个问题,当初确实从Hide窗口的角度来考虑,怎么也找不到这个图标的句柄。<br>逐渐的知道了,那是一个ImageList,找不到句柄的(这个和时钟区域不同)。<br>下面的代码试验通过。<br><br>uses<br>&nbsp; shellapi;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; nt: TNotifyIconData;<br>begin<br>&nbsp; with nt do<br>&nbsp; begin<br>&nbsp; &nbsp; cbSize := SizeOf(nt); //#32770<br>&nbsp; &nbsp; Wnd &nbsp; &nbsp;:= FindWindow(nil,'记事本(Top)' );<br>&nbsp; &nbsp; uid &nbsp; &nbsp;:= 0;<br>&nbsp; &nbsp; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;<br>&nbsp; &nbsp; uCallbackMessage := WM_USER + 17;<br>&nbsp; &nbsp; hIcon &nbsp;:= 0;<br>&nbsp; &nbsp; szTip &nbsp;:= '';<br>&nbsp; end;<br>&nbsp; Shell_NotifyIcon(NIM_DELETE, @nt);<br>end;
 
各位继续呀!我也在研究此问题,我研究的结果是:<br>图标栏是一个ToolbarWindow32类型的控件可以使用此类控件“TB_”开头的消息,例如<br>SendMessage(ToolbarWindow32.Handle, TB_HIDEBUTTON, 0, MakeLong(Ord(True), 0))//隐藏第一个图标<br>希望各位可以更进一步,获得各个图标的详细信息,并作出一个象SysTrayX的软件来。<br>^_^,做出来了以后希望通知我一声 hryyx@163.com
 
后退
顶部