找回密码
 加入
搜索
查看: 1634|回复: 4

[AU3基础] 看看我的源码有没有错误的地方

[复制链接]
发表于 2010-12-3 12:36:34 | 显示全部楼层 |阅读模式
本帖最后由 83265358 于 2010-12-3 13:58 编辑

刚接触AU3几天,请前辈高手们多指教!
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3> ;系统控制需要函数.
Opt("TrayOnEventMode",1) ;应用/关闭 OnEvent 函数通知于系统托盘图标. 0 = (默认) 关闭 1 = 应用 

Break(0) ;禁止用户从脚本程序的托盘菜单中退出

;防止程序重复打开
$title = "Music" 
If WinExists($title) Then Exit

;设置热键
Global $Paused
HotKeySet("{PAUSE}", "MinimiZe")
HotKeySet("{HOME}", "WinRestore")
HotKeySet("{END}", "Terminate")

TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "WinRestore") ;鼠标主要按键(通常左键)在托盘图标上按下.
TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "WinRestore") ;鼠标次要按键(通常右键)在托盘图标上按下.

$Form1 = GUICreate("Music", 300, 380, -1, -1)
GUISetState(@SW_SHOW)

$os = ObjCreate("Shell.Explorer.2")
GUISetState(@SW_SHOW)
$GUIActiveX = GUICtrlCreateObj($os, 0, 0, 300, 500)
$os.navigate("http://music.sina.com.cn/iframe/yueku/msnshell/msnshellplayer.shtml")

;内存清理放在这儿是否正确
$List=ProcessList()
For $x=1 to $List[0][0]
        _EmptyMyScriptMem($List[$x][1])
Next

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                        
                Case $GUI_EVENT_MINIMIZE ;对话框(窗口)被最小化(窗口标题栏上的最小化按钮被点击).
                        GUISetState(@SW_HIDE, $Form1)
                        TrayTip("我藏在这里", "用我的时候点我,或按Home呼出", 1, 1) ;最小化时气泡提示

        EndSwitch

WEnd

Func MinimiZe() ;热键最小化
        GUISetState(@SW_HIDE, $Form1)
        TrayTip("我藏在这里", "用我的时候点我,或按Home呼出", 1, 1) ;最小化时气泡提示
EndFunc

Func Terminate() ;热键退出程序
        Exit 0
EndFunc

Func WinRestore() ;热键显示窗口
        GUISetState(@SW_SHOW, $Form1)
EndFunc

Func _EmptyMyScriptMem($PID) ;内存清理函数
        Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PID)
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
        DllCall("kernel32.dll" , 'int', 'CloseHandle', 'int', $ai_Handle[0])
EndFunc

        
 楼主| 发表于 2010-12-3 12:37:34 | 显示全部楼层
杀花自己坐。。。
发表于 2010-12-3 15:50:20 | 显示全部楼层
本帖最后由 yhxhappy 于 2010-12-3 15:59 编辑

有意思的东西,以前没接触过

我自己改了一下,去掉了窗口边框,拖动标题栏也可以拖动窗口,点击 X 按钮关闭,但是,关闭按钮用一个空白LABEL,没有高亮效果,也没有最小化按钮了
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3> ;系统控制需要函数.
#include <Misc.au3>                                        ;移动窗口用的
Opt("TrayOnEventMode",1) ;应用/关闭 OnEvent 函数通知于系统托盘图标. 0 = (默认) 关闭 1 = 应用 

Break(0) ;禁止用户从脚本程序的托盘菜单中退出

;防止程序重复打开
$title = "Music" 
If WinExists($title) Then Exit

;设置热键
Global $Paused
HotKeySet("{PAUSE}", "MinimiZe")
HotKeySet("{HOME}", "WinRestore")
HotKeySet("{END}", "Terminate")

TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "WinRestore") ;鼠标主要按键(通常左键)在托盘图标上按下.
TraySetOnEvent($TRAY_EVENT_SECONDARYDOWN, "WinRestore") ;鼠标次要按键(通常右键)在托盘图标上按下.

$Form1 = GUICreate("Music", 300, 380, -1, -1, $WS_POPUP)
$Label1 = GUICtrlCreateLabel("", 0, 0, 270, 20)                                ;标题空白LABEL
$Label2 = GUICtrlCreateLabel("", 270, 7, 15, 15)                                ;关闭LABEL
        GUICtrlSetCursor(-1, 0)
        GUICtrlSetTip(-1, "关闭")
        ;GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW)

$os = ObjCreate("Shell.Explorer.2")
GUISetState(@SW_SHOW)
$GUIActiveX = GUICtrlCreateObj($os, 0, 0, 300, 500)
$os.navigate("http://music.sina.com.cn/iframe/yueku/msnshell/msnshellplayer.shtml")

;内存清理放在这儿是否正确
$List=ProcessList()
For $x=1 to $List[0][0]
        _EmptyMyScriptMem($List[$x][1])
Next

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                                        Exit                        
                Case $GUI_EVENT_MINIMIZE ;对话框(窗口)被最小化(窗口标题栏上的最小化按钮被点击).
                                        GUISetState(@SW_HIDE, $Form1)
                                        TrayTip("我藏在这里", "用我的时候点我,或按Home呼出", 1, 1) ;最小化时气泡提示
                                Case $GUI_EVENT_PRIMARYDOWN
                                        Click($Form1)                                                ;移动窗口控件
        EndSwitch

WEnd

Func MinimiZe() ;热键最小化
        GUISetState(@SW_HIDE, $Form1)
        TrayTip("我藏在这里", "用我的时候点我,或按Home呼出", 1, 1) ;最小化时气泡提示
EndFunc
        
Func Click($GUI) ;窗口拖动
        $MS = GUIGetCursorInfo($GUI)
        If $MS[4] = $Label1 Then 
                Local $PosDiff[2], $MousePos, $WinPos
                $MousePos = MouseGetPos()
                $WinPos = WinGetPos($GUI, "")
                $PosDiff[0] = $WinPos[0] - $MousePos[0]
                $PosDiff[1] = $WinPos[1] - $MousePos[1]
                While _IsPressed("01", DllOpen("user32.dll"))
                        $MousePos = MouseGetPos()
                        WinMove($GUI, "", $MousePos[0] + $PosDiff[0], $MousePos[1] + $PosDiff[1])
                        Sleep(10)
                WEnd
        ElseIf $MS[4] = $Label2 Then
                Exit
        EndIf
EndFunc

Func Terminate() ;热键退出程序
        Exit 0
EndFunc

Func WinRestore() ;热键显示窗口
        GUISetState(@SW_SHOW, $Form1)
EndFunc

Func _EmptyMyScriptMem($PID) ;内存清理函数
        Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $PID)
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
        DllCall("kernel32.dll" , 'int', 'CloseHandle', 'int', $ai_Handle[0])
EndFunc        

        
发表于 2010-12-3 17:27:49 | 显示全部楼层
值得学习,收藏
发表于 2010-12-4 09:28:24 | 显示全部楼层
什么代码,下来看看,谢谢...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 16:25 , Processed in 0.076630 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表