我想做一个QQ小工具,具体就是:在QQ好友发送消息过来后,小企鹅变成对方的头像闪啊闪的,这个时候我的工具就侦察到这个状态,并打开聊天窗口,进行回复并发送。
但是有一个问题,我一直没有答案: 当对方发送消息到来,头像开始闪动,如何用程序获取这一状态?如何对其操作,比如双击?我知道有种方法是设置聊天窗口为“聊天模式”来解决,可是由于种种原因,我只能设置为“消息模式”,所以不得不对其任务栏图标做文章,而我在网上搜索,发现对其的讨论甚少,希望有心得的朋友能够赐教。
但是有一个问题,我一直没有答案: 当对方发送消息到来,头像开始闪动,如何用程序获取这一状态?如何对其操作,比如双击?我知道有种方法是设置聊天窗口为“聊天模式”来解决,可是由于种种原因,我只能设置为“消息模式”,所以不得不对其任务栏图标做文章,而我在网上搜索,发现对其的讨论甚少,希望有心得的朋友能够赐教。
用Findwindow ,FindWindowEx可以获取任务栏时间的图标的句柄,但怎样获取其它应用程序加在这个地方的图标句柄呢?如拨号连接的句柄,音量控制的名柄等,我用SPY++看见三个大类“Button","ReBarWindow32","TrayNotifyWnd","TrayNotifyWnd"下面仅有“TrayClockWclass”一个,没有其它的,是不是其它应用程序加在这个地方的图标属于另一个父窗口?
可以这样做,你看看
HANDLE hShellTray = FindWindow("Shell_TrayWnd", NULL);
if(hShellTray == NULL )
return;
HANDLE hTrayNotify = FindWindowEx(hShellTray, NULL, "TrayNotifyWnd", NULL);
if(hTrayNotify == NULL)
return;
HANDLE hToolBar = FindWindowEx(hTrayNotify, NULL, "ToolbarWindow32", NULL);
if(hToolBar)
{
SendMessage(hToolBar, TB_HIDEBUTTON, 1, false) ; //就这里了,你可以在这里改动
}
您的意思是:TOOLBARWINDOW32依次是shell_traywnd\hshelltray\htraynotify下的子窗口,任务栏图标就在其中,要访问其中的第二个图标,可以用sendMessage发送消息,并设置第三个参数是1(如果访问第一个图标,就设置为0),这是我的理解,请指教!
如果是这样,我怎样在不知道图标在任务栏位置的情况下,根据其一些特征找出它的位置?比如QQ图标?
还有在QQ图标跳动的时候,我如何获取这一消息?
|---Button (HWND:0x00020036)
|---TrayNotifyWnd (HWND:0x00020032)
|-----TrayClockWClass (HWND:0x00020030)
|-----ToolbarWindow32 (HWND:0x0002002E) <----这个就是任务栏中的图标
|---ReBarWindow32 (HWND:0x0001004A)
|-----MSTaskSwWClass (HWND:0x0001004E)
|-------SysTabControl32 (HWND:0x00010050)
|-----ToolbarWindow32 (HWND:0x0001004C)所有对ToolbarWindow32可以进行的操作,它也可以操作,比如获取所有按钮上的Caption等等(http://blog.csdn.net/missdeer/archive/2005/02/03/279076.aspx有例子)
像我现在的机器上,就是这样的结果:音量
卡巴斯基反病毒单机版
MSN Messenger — 未登录
金山词霸:Ctrl + 鼠标取词取词开关:Ctrl+Alt+F1
连接到 16300速度: 42.6 Kbps发送的: 1,400,111 字节收到: 10,922,979 字节
Maxthon
QQ 93414321
FlashGet - 队列中共有36文件
中文(中国)