半芯蕃茄 发表于 2011-12-14 15:39:41

[已解决]点击托盘图标同时弹出托盘右键的问题

本帖最后由 半芯蕃茄 于 2011-12-14 21:01 编辑

#NoTrayIcon
#Include <GuiToolBar.au3>
_SysTray_ClickItem("酷狗", "right", 1)
;====================================================================================

;Autor(s):      R.Gilman (a.k.a rasim); Siao (Thanks for idea )

;====================================================================================

Func _SysTray_ClickItem($iTitle, $iButton = "left", $iClick = 1)

    Local $hToolbar, $iButCount, $aRect, $i

    If Not $iTitle Then

      MsgBox(16, "Error", "Please indicate title")

      Return 0

    EndIf

   

$hToolbar = ControlGetHandle('', '', '')

    If @error Then

       MsgBox(16, "Error", "System tray not found")

      Return 0

    EndIf

   

    $iButCount = _GUICtrlToolbar_ButtonCount($hToolbar)

    If $iButCount = 0 Then

      MsgBox(16, "Error", "Not found item in system tray")

       Return

    EndIf

   

    For $i = 0 To $iButCount - 1

      $cID = _GUICtrlToolbar_IndexToCommand($hToolBar, $i)

      If StringInStr(_GUICtrlToolbar_GetButtonText($hToolBar, $i), $iTitle) Then

         $aRect = _GUICtrlToolbar_GetButtonRect($hToolBar, $i)

         ControlClick("", "", "ToolbarWindow321", $iButton, $iClick, $aRect, 5)

         $aRect = 0

          Return 1

   EndIf

   Next

    MsgBox(48, "Fail", "Required item not found")

EndFunc
以上代码是右键点击酷狗的托盘图标,但是很奇怪的是连托盘空白处的右键也弹了出来。求解决方法,不想弹出如图弹出的:

bdancerlc 发表于 2011-12-14 15:53:11

同问,我用AUTOIT3汉化版的那个托盘菜单,也会出现这样的情况,既弹出托盘程序的菜单,也会出现XP系统带的任务栏的右键菜单..

lixiaolong 发表于 2011-12-14 19:20:10

本帖最后由 lixiaolong 于 2011-12-14 19:54 编辑

回复 1# 半芯蕃茄

把56行改成这样试一下.
ControlClick("", "", "ToolbarWindow321", $iButton, $iClick, $aRect + 5, 5)

给你一个代码,这个比较准.#include "SysTray_UDF.au3"

Opt("WinTitleMatchMode", 4)
Opt("WinSearchChildren", 1)

_SysTray_ClickItem("kugou7.exe", "right")

Func _SysTray_ClickItem($iTitle, $iButton = "left", $iClick = 1)
        Local $k_pos = MouseGetPos()
        Local $posTray = WinGetPos(_FindTrayToolbarWindow())
        Local $index = _SysTrayIconIndex($iTitle)

        If $index <> -1 Then
                Local $pos = _SysTrayIconPos($index)
                If $pos = -1 Then
                        $pos = _SysTrayIconPos($index)
                        If $pos = -1 Then Exit
                EndIf
                MouseMove($pos, $pos, 0)
                Sleep(100)
                MouseClick("right")
                MouseMove($k_pos, $k_pos, 0)
        EndIf
EndFunc   ;==>_SysTray_ClickItem

半芯蕃茄 发表于 2011-12-14 20:53:50

回复 3# lixiaolong


    非常感谢,确实比较准确。。

leon460 发表于 2011-12-19 16:45:12

测试xiaolong 的代码,,效果很好,,
感谢

曼菲士 发表于 2011-12-20 08:53:58

谢谢分享,留个脚印。

michealwang 发表于 2012-1-3 22:19:47

我用xiaolong的代码!出现图所示“求解答

lixiaolong 发表于 2012-1-4 14:56:50

回复 7# michealwang

打不开【SysTray_UDF.au3】文件.

下载新版本里有这个文件.
http://www.autoitx.com/thread-12964-1-1.html

或者把第一行改成这样试试.
#include <SysTray_UDF.au3>

michealwang 发表于 2012-1-4 16:46:22

我下载了最新的版本,也试着把第一行改成“#include <SysTray_UDF.au3>”还是出现同样的错误啊

lixiaolong 发表于 2012-1-5 19:20:50

回复 9# michealwang

发给你吧.

michealwang 发表于 2012-1-7 14:09:14

再次感谢“lixiaolong ”的源码!真的很感谢“lixiaolong ”大大,你是那么的热情!
我现在阐述一下我要实现的目的:
   PUBWIN2009的客户机“请求挂机”功能是:一旦你挂了机,就算是重启了还是挂机的!而其他的挂机锁不能实现!
   而PUBWIN2009的“请求挂机”是在最右下角。如图:我想把它创建成桌面快捷方式!

hgzhoulin 发表于 2014-10-30 11:15:21

感谢分享,学习啦~
页: [1]
查看完整版本: [已解决]点击托盘图标同时弹出托盘右键的问题