我想做一个QQ小工具,具体就是:在QQ好友发送消息过来后,小企鹅变成对方的头像闪啊闪的,这个时候我的工具就侦察到这个状态,并打开聊天窗口,进行回复并发送。
但是有一个问题,我一直没有答案:   当对方发送消息到来,头像开始闪动,如何用程序获取这一状态?如何对其操作,比如双击?我知道有种方法是设置聊天窗口为“聊天模式”来解决,可是由于种种原因,我只能设置为“消息模式”,所以不得不对其任务栏图标做文章,而我在网上搜索,发现对其的讨论甚少,希望有心得的朋友能够赐教。

解决方案 »

  1.   

    当我的鼠标在任务栏图标上停留的时候,会悬浮出TIP,我想这些图标也是可以操作的吧,比如获取状态,比如模拟点击,可是这方面的资料实在太少,希望大家能进来讨论一下
      

  2.   

    搜索到一些提问,可惜没有答复:
    用Findwindow ,FindWindowEx可以获取任务栏时间的图标的句柄,但怎样获取其它应用程序加在这个地方的图标句柄呢?如拨号连接的句柄,音量控制的名柄等,我用SPY++看见三个大类“Button","ReBarWindow32","TrayNotifyWnd","TrayNotifyWnd"下面仅有“TrayClockWclass”一个,没有其它的,是不是其它应用程序加在这个地方的图标属于另一个父窗口?
      

  3.   

    没有句柄,只能通过ToolbarWindow32来操作,下面是把第二个图标隐藏
    可以这样做,你看看
       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) ;  //就这里了,你可以在这里改动
        }
      

  4.   

    首先谢谢constantine的帮助。
    您的意思是:TOOLBARWINDOW32依次是shell_traywnd\hshelltray\htraynotify下的子窗口,任务栏图标就在其中,要访问其中的第二个图标,可以用sendMessage发送消息,并设置第三个参数是1(如果访问第一个图标,就设置为0),这是我的理解,请指教!
    如果是这样,我怎样在不知道图标在任务栏位置的情况下,根据其一些特征找出它的位置?比如QQ图标?
    还有在QQ图标跳动的时候,我如何获取这一消息?
      

  5.   

    |-Shell_TrayWnd (HWND:0x00020038)
    |---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文件
    中文(中国)
      

  6.   

    那段代码是在BCB6下通过的,要在Delphi下用,还得自己改