如何获得托盘图标的句柄?(200分)

J

jy88jy

Unregistered / Unconfirmed
GUEST, unregistred user!
关于托盘的讨论很多了,我搜索了一下,发现没有关于如何获得托盘图标的句柄的具体回答。<br><br>事实上,我的要求是给某个程序的托盘图标——比如金山词霸的图标——给他发送一个消息,<br>双击或是单击,让金山词霸能够跳出窗口来。
 
可以使用这个让金山词霸的跳出,我的是“金山词霸 2002”<br>var<br>&nbsp; Wnd: HWND;<br>begin<br>&nbsp; Wnd:=FindWindow(nil,'金山词霸 2002');<br>&nbsp; ShowWindow(wnd,SW_SHOWNORMAL);<br>end;
 
图标接受到的消息是程序自己定义的消息啊,不是系统的消息,(也就是这个消息你并不<br>知道,按鼠标的话,只是这个鼠标操作自动触发了那个自定义的消息。)<br>这样的话你如何才能传给程序它的自定义消息啊?<br>所以此方法行不通。<br>如果一定要这样的话,可以尝试模拟鼠标操作,将鼠标定位到托盘的图标上,然后模拟鼠标<br>的点击操作。<br><br><br><br><br>
 
&nbsp;楼上说的也可以。但可以另一个办法。<br>你想过没有。windows.是message驱动。而托盘在正常情况下,当mouse在那个位置点时,<br>会出来一些东东。为什么呢?因为有自定义消息,那个东东是那个消息做事的结果。我们<br>可不可以直接传一个东东给那个自定义消息呢?答案是可以。点到如些,我以前就做过一<br>个,可以的。<br>
 
首先要澄清一点:<br>窗口句柄和图标句柄是两回事,是不能给图标句标发消息的。<br>如果是说“系统托盘图标对应的窗口句柄”,假如有的话,我觉得还差不多。<br><br>其它在你向系统发送广播消息 SC_Maximize 时,这些图标会现出原形。
 
用Windows API的shell_notifyicon函数,在VC、VB中都实现过,在DELPHI中没找到。
 
shell_notifyicon在Delphi下面也可以实现,不过楼主的需求使用FindWindow就可以实现,没有必要那么麻烦。
 
顶部