免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

[AU3脚本] 漂浮窗口仿迅雷悬浮窗带靠边隐藏功能代码

  1. #include <WindowsConstants.au3>
  2. #include <GUIConstantsEx.au3>
  3. #include <ButtonConstants.au3>
  4. #include <GUIConstantsEx.au3>
  5. #include <StaticConstants.au3>
  6. #include <winapiex.au3>
  7. #include <Process.au3>
  8. Opt('MustDeclareVars', 1)
  9. Opt('GUIOnEventMode', 1)
  10. Opt("TrayMenuMode", 1)
  11. Opt("TrayOnEventMode", 1)
  12. Global $gui, $zhugui, $OptionsBtn, $OptionsDummy, $OptionsContext, $OptionsCommon, $OptionsFile, $OptionsExit
  13. Global $tpiao, $tExit, $Wp, $Mp
  14. Global $zhuzt = True
  15. $zhugui = GUICreate("主窗口", 200, 300)
  16. GUISetOnEvent($GUI_EVENT_CLOSE, "zhu")
  17. $gui = GUICreate("飘浮窗口", 100, 30, @DesktopWidth - 120, 160, 0x80880000, 0x00000188)
  18. GUISetBkColor(0xE0FF00)
  19. GUISetOnEvent($GUI_EVENT_CLOSE, "exitfunc")
  20. GUICtrlCreateLabel("漂浮示例", 2, 2, -1, -1, -1, 0x00100000)

  21. GUIRegisterMsg(0x0084, "WM_NCHITTEST")
  22. GUIRegisterMsg(0x00A3, "WM_NCLBUTTONDBLCLK")
  23. GUIRegisterMsg(0x00A5, "WM_NCRBUTTONUP")
  24. GUIRegisterMsg(0x0111, "WM_COMMAND")

  25. $tpiao = TrayCreateItem("隐藏漂浮窗口")
  26. TrayItemSetOnEvent(-1, "guaipiao")
  27. TrayCreateItem("")
  28. $tExit = TrayCreateItem("退出")
  29. TrayItemSetOnEvent(-1, "exitfunc")
  30. TraySetOnEvent(-13, "zhu")
  31. piao()
  32. WinSetTrans($gui, "", 170)
  33. zhu()

  34. While 1
  35.         $Wp = WinGetPos($gui)
  36.         $Mp = MouseGetPos()
  37.         Select
  38.                 Case $Wp[1] <= 4
  39.                         If ($Mp[0] < $Wp[0] Or $Mp[0] > $Wp[0] + $Wp[2] Or $Mp[1] > $Wp[1] + $Wp[3]) Then
  40.                                 WinMove($gui, "", $Wp[0], 4 - $Wp[3], $Wp[2], $Wp[3], 1)
  41.                         Else
  42.                                 WinMove($gui, "", $Wp[0], 4, $Wp[2], $Wp[3], 1)
  43.                         EndIf
  44.                 Case $Wp[0] >= (@DesktopWidth - $Wp[2] + 4)
  45.                         If ($Mp[0] < $Wp[0] Or $Mp[1] < $Wp[1] Or $Mp[1] > $Wp[1] + $Wp[3]) Then
  46.                                 WinMove($gui, "", @DesktopWidth - 4, $Wp[1], $Wp[2], $Wp[3], 1)
  47.                         Else
  48.                                 WinMove($gui, "", @DesktopWidth - $Wp[2] + 4, $Wp[1], $Wp[2], $Wp[3], 1)
  49.                         EndIf
  50.         EndSelect
  51.         Sleep(200)
  52. WEnd

  53. Func guaipiao()
  54.         GUISetState(@SW_HIDE, $gui)
  55.         TrayItemSetText($tpiao, "显示漂浮窗口")
  56.         TrayItemSetOnEvent($tpiao, "piao")
  57.         TrayItemSetState($tpiao, 4)
  58. EndFunc   ;==>guaipiao

  59. Func piao()
  60.         GUISetState(@SW_SHOW, $gui)
  61.         TrayItemSetText($tpiao, "隐藏漂浮窗口")
  62.         TrayItemSetOnEvent($tpiao, "guaipiao")
  63.         TrayItemSetState($tpiao, 4)
  64. EndFunc   ;==>piao

  65. Func zhu()
  66.         If $zhuzt Then
  67.                 GUISetState(@SW_SHOW, $zhugui)
  68.                 $zhuzt = Not ($zhuzt)
  69.         Else
  70.                 GUISetState(@SW_HIDE, $zhugui)
  71.                 $zhuzt = Not ($zhuzt)
  72.         EndIf
  73. EndFunc   ;==>zhu

  74. Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
  75.         If ($hWnd = $gui) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
  76. EndFunc   ;==>WM_NCHITTEST

  77. Func WM_NCLBUTTONDBLCLK($hWnd, $iMsg, $iwParam, $ilParam)
  78.         If ($hWnd = $gui) And ($iMsg = $WM_NCLBUTTONDBLCLK) Then zhu()
  79. EndFunc   ;==>WM_NCLBUTTONDBLCLK

  80. Func WM_NCRBUTTONUP($hWnd, $iMsg, $iwParam, $ilParam)
  81.         If ($hWnd = $gui) And ($iMsg = $WM_NCRBUTTONUP) Then xfmenu()
  82. EndFunc   ;==>WM_NCRBUTTONUP

  83. Func exitfunc()
  84.         Exit
  85. EndFunc   ;==>exitfunc

  86. Func xfmenu()
  87.         $OptionsDummy = GUICtrlCreateDummy()
  88.         $OptionsContext = GUICtrlCreateContextMenu($OptionsDummy)
  89.         $OptionsCommon = GUICtrlCreateMenuItem("隐藏漂浮窗口", $OptionsContext)
  90.         $OptionsFile = GUICtrlCreateMenuItem("暂时无功能", $OptionsContext)
  91.         GUICtrlCreateMenuItem("", $OptionsContext)
  92.         $OptionsExit = GUICtrlCreateMenuItem("退出", $OptionsContext)
  93.         ShowMenu($gui, $OptionsContext)
  94. EndFunc   ;==>xfmenu

  95. Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
  96.         Switch $iwParam
  97.                 Case $OptionsExit
  98.                         Exit
  99.                 Case $OptionsCommon
  100.                         guaipiao()
  101.         EndSwitch
  102. EndFunc   ;==>WM_COMMAND

  103. Func ShowMenu($hWnd, $nContextID)
  104.         Local $arPos, $x, $y
  105.         Local $hMenu = GUICtrlGetHandle($nContextID)
  106.         $arPos = MouseGetPos()
  107.         $x = $arPos[0]
  108.         $y = $arPos[1]
  109.         TrackPopupMenu($hWnd, $hMenu, $x, $y)
  110. EndFunc   ;==>ShowMenu

  111. Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
  112.         DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
  113. EndFunc   ;==>TrackPopupMenu  
复制代码

返回列表