- #include <WindowsConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <ButtonConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <winapiex.au3>
- #include <Process.au3>
- Opt('MustDeclareVars', 1)
- Opt('GUIOnEventMode', 1)
- Opt("TrayMenuMode", 1)
- Opt("TrayOnEventMode", 1)
- Global $gui, $zhugui, $OptionsBtn, $OptionsDummy, $OptionsContext, $OptionsCommon, $OptionsFile, $OptionsExit
- Global $tpiao, $tExit, $Wp, $Mp
- Global $zhuzt = True
- $zhugui = GUICreate("主窗口", 200, 300)
- GUISetOnEvent($GUI_EVENT_CLOSE, "zhu")
- $gui = GUICreate("飘浮窗口", 100, 30, @DesktopWidth - 120, 160, 0x80880000, 0x00000188)
- GUISetBkColor(0xE0FF00)
- GUISetOnEvent($GUI_EVENT_CLOSE, "exitfunc")
- GUICtrlCreateLabel("漂浮示例", 2, 2, -1, -1, -1, 0x00100000)
- GUIRegisterMsg(0x0084, "WM_NCHITTEST")
- GUIRegisterMsg(0x00A3, "WM_NCLBUTTONDBLCLK")
- GUIRegisterMsg(0x00A5, "WM_NCRBUTTONUP")
- GUIRegisterMsg(0x0111, "WM_COMMAND")
- $tpiao = TrayCreateItem("隐藏漂浮窗口")
- TrayItemSetOnEvent(-1, "guaipiao")
- TrayCreateItem("")
- $tExit = TrayCreateItem("退出")
- TrayItemSetOnEvent(-1, "exitfunc")
- TraySetOnEvent(-13, "zhu")
- piao()
- WinSetTrans($gui, "", 170)
- zhu()
- While 1
- $Wp = WinGetPos($gui)
- $Mp = MouseGetPos()
- Select
- Case $Wp[1] <= 4
- If ($Mp[0] < $Wp[0] Or $Mp[0] > $Wp[0] + $Wp[2] Or $Mp[1] > $Wp[1] + $Wp[3]) Then
- WinMove($gui, "", $Wp[0], 4 - $Wp[3], $Wp[2], $Wp[3], 1)
- Else
- WinMove($gui, "", $Wp[0], 4, $Wp[2], $Wp[3], 1)
- EndIf
- Case $Wp[0] >= (@DesktopWidth - $Wp[2] + 4)
- If ($Mp[0] < $Wp[0] Or $Mp[1] < $Wp[1] Or $Mp[1] > $Wp[1] + $Wp[3]) Then
- WinMove($gui, "", @DesktopWidth - 4, $Wp[1], $Wp[2], $Wp[3], 1)
- Else
- WinMove($gui, "", @DesktopWidth - $Wp[2] + 4, $Wp[1], $Wp[2], $Wp[3], 1)
- EndIf
- EndSelect
- Sleep(200)
- WEnd
- Func guaipiao()
- GUISetState(@SW_HIDE, $gui)
- TrayItemSetText($tpiao, "显示漂浮窗口")
- TrayItemSetOnEvent($tpiao, "piao")
- TrayItemSetState($tpiao, 4)
- EndFunc ;==>guaipiao
- Func piao()
- GUISetState(@SW_SHOW, $gui)
- TrayItemSetText($tpiao, "隐藏漂浮窗口")
- TrayItemSetOnEvent($tpiao, "guaipiao")
- TrayItemSetState($tpiao, 4)
- EndFunc ;==>piao
- Func zhu()
- If $zhuzt Then
- GUISetState(@SW_SHOW, $zhugui)
- $zhuzt = Not ($zhuzt)
- Else
- GUISetState(@SW_HIDE, $zhugui)
- $zhuzt = Not ($zhuzt)
- EndIf
- EndFunc ;==>zhu
- Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
- If ($hWnd = $gui) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
- EndFunc ;==>WM_NCHITTEST
- Func WM_NCLBUTTONDBLCLK($hWnd, $iMsg, $iwParam, $ilParam)
- If ($hWnd = $gui) And ($iMsg = $WM_NCLBUTTONDBLCLK) Then zhu()
- EndFunc ;==>WM_NCLBUTTONDBLCLK
- Func WM_NCRBUTTONUP($hWnd, $iMsg, $iwParam, $ilParam)
- If ($hWnd = $gui) And ($iMsg = $WM_NCRBUTTONUP) Then xfmenu()
- EndFunc ;==>WM_NCRBUTTONUP
- Func exitfunc()
- Exit
- EndFunc ;==>exitfunc
- Func xfmenu()
- $OptionsDummy = GUICtrlCreateDummy()
- $OptionsContext = GUICtrlCreateContextMenu($OptionsDummy)
- $OptionsCommon = GUICtrlCreateMenuItem("隐藏漂浮窗口", $OptionsContext)
- $OptionsFile = GUICtrlCreateMenuItem("暂时无功能", $OptionsContext)
- GUICtrlCreateMenuItem("", $OptionsContext)
- $OptionsExit = GUICtrlCreateMenuItem("退出", $OptionsContext)
- ShowMenu($gui, $OptionsContext)
- EndFunc ;==>xfmenu
- Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
- Switch $iwParam
- Case $OptionsExit
- Exit
- Case $OptionsCommon
- guaipiao()
- EndSwitch
- EndFunc ;==>WM_COMMAND
- Func ShowMenu($hWnd, $nContextID)
- Local $arPos, $x, $y
- Local $hMenu = GUICtrlGetHandle($nContextID)
- $arPos = MouseGetPos()
- $x = $arPos[0]
- $y = $arPos[1]
- TrackPopupMenu($hWnd, $hMenu, $x, $y)
- EndFunc ;==>ShowMenu
- Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
- DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
- EndFunc ;==>TrackPopupMenu
复制代码 |