[已解决]:多个QQ托盘图标无法隐藏
本帖最后由 dnbj2010 于 2010-3-18 16:45 编辑当运行一个QQ时,使用如下代码可以将QQ托盘图标隐藏
#include "SysTray_UDF.au3"
$st_process = "QQ.exe"
_SysTrayIconVisible(1, _SysTrayIconIndex($st_process))
但如果开两个QQ或者更多,却始终只能隐藏一个。其他无效。
去看了一下SysTray_UDF.au3,他是先获取获取托盘栏所有图标程序的标题,再以此获取进程PID列表,再以此获取进程名称,然后隐藏托盘图标的。可多个QQ的标题都是同样的,所以这个SysTray_UDF.au3就只能识别一个QQ进程了,只能隐藏一个QQ托盘。
改来改去都解决不了,向高手求解。 当运行一个QQ时,使用如下代码可以将QQ托盘图标隐藏
#include "SysTray_UDF.au3"
$st_process = "QQ.ex ...
dnbj2010 发表于 2010-3-18 11:10 http://www.autoitx.com/images/common/back.gif
其实很简单,思路对了就可以了。你的思路上就是多了条要给所有同名程序添加不同的标题,但是你忽略一个现成的条件,那就是进程标识,那是唯一的,既然这样那我们完全可以依赖现成的ProcessList()。
罗列进程,触发条件(QQ.EXE),匹配就隐藏。
范例:
#include "SysTray_UDF.au3"
$List=ProcessList()
$i=$List
$j=1
while $j<=$i
If StringUpper($List[$j])="QQ.EXE"then
_SysTrayIcon_Clean($List[$j],1)
Endif
$j=$j+1
TraySetState(2)
WEnd
上述内容是昨天和今天学习所得,参考文献
http://www.autoitx.com/thread-13661-1-1.html
我改进的UDF 不当处请指正
http://www.autoitx.com/thread-32692-1-1.html 个人笨想法哈,如果多个窗口标题相同,可以整一个,然后修改其标题,循环进行下一个。。。
至于你的问题估计会麻烦些,因为你要根据系统的UDF进行修改使用。。 二楼的方法不行啊,QQ的标题随便改,但还是只能隐藏一个QQ托盘图标。代码如下:
#include "SysTray_UDF.au3"
$st_process = "QQ.exe"
_SysTrayIconVisible(1, _SysTrayIconIndex($st_process));隐藏指定托盘图标
sleep(500)
$i = Random (100, 999, 1)
WinActivate("QQ2009 Beta2", "")
WinSetTitle ( "QQ2009 Beta2", "", "QQ2009 _"&$i) _SysTrayIcon_Clean('QQ.exe')
http://www.autoitx.com/thread-13661-1-1.html
楼主应该解决了吧~ 是的,解决了。
afan超级版主果然是算得准。
我起先从http://www.autoitx.com/thread-13661-1-1.html这里下了systray UDF.au3
我也想到要清除一下图标。
可我总是测试失败,纳闷了。一怒之下不弄了。又过来看到你的回贴,我又回去查。唉呀,失败啊。
我居然把#include "systray UDF.au3"写成#include "SysTray_UDF.au3"
难怪总是失败,真是一杠害死人。
再将代码奉上:
#include "SysTray_UDF.au3"
$st_process = "QQ.exe"
_SysTrayIconVisible(1, _SysTrayIconIndex($st_process));隐藏指定托盘图标
sleep(500)
$i = Random (100, 999, 1)
WinActivate("QQ2009 Beta2", "")
WinSetTitle ( "QQ2009 Beta2", "", "QQ2009 _"&$i)
_SysTrayIcon_Clean('QQ.exe') 晕,真是误人,刚才发的代码第一句
#include "SysTray_UDF.au3"是错的那个
正确的是下面这个
#include "systray UDF.au3"
惭愧! 回复 6# dnbj2010
呵呵,如果你只想清理图标,一句就行了,前面的多余了~
#include "SysTray UDF.au3"
_SysTrayIcon_Clean('QQ.exe') 确实,更换QQ标题这一步是多余的。看来只要及时清除隐藏后的托盘图标,AU3就可以重新获取新的PID列表。这样可以隐藏多个QQ的托盘图标。学习了。
afan版主今日凌晨发布systray UDF.au3,料事如神啊。呵呵。
#include "SysTray UDF.au3"
$st_process = "QQ.exe"
_SysTrayIconVisible(1, _SysTrayIconIndex($st_process));隐藏指定托盘图标
_SysTrayIcon_Clean('QQ.exe') 回复 8# dnbj2010
呵呵,碰巧了~
不过你这段代码应该不用先 _SysTrayIconVisible(1, _SysTrayIconIndex($st_process))隐藏,直接 _SysTrayIcon_Clean('QQ.exe') 就OK了吧? 回复 9# afan
还真是,直接清掉图标就行了。我这个隐藏这一步也还是多余了。隐藏即清除,理解深入点了。
谢版主。 看看:face (20): 非常感谢,收藏了不少好东西~~~~~~~~~~~ 借楼主的帖问一下,SysTray UDF.au3是不是不支持WIN7? 在VISTA没有用呀
页:
[1]
2