|
- #NoTrayIcon
- #Region ;**** 参数创建于 ACNWrapper_GUI ****
- #AutoIt3Wrapper_icon=U:\autoit3\Aut2Exe\Icons\strawberry.ico
- #AutoIt3Wrapper_outfile=AutoIcon.exe
- #AutoIt3Wrapper_Compression=4
- #AutoIt3Wrapper_Res_Comment=桌面图标设置
- #AutoIt3Wrapper_Res_Description=网吧桌面图标设置
- #AutoIt3Wrapper_Res_Fileversion=1.0.0.1
- #AutoIt3Wrapper_Res_LegalCopyright=SxyNetBar
- #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
- #AutoIt3Wrapper_UseAnsi=y
-
- #include <GuiListView.au3>
- Opt("MustDeclareVars", 1)
- Global $hWndManager = WinGetHandle("Program Manager")
- Global $hWndDesktop = ControlGetHandle("Program Manager","",1)
- If Not IsDeclared("GWL_STYLE") Then Global Const $GWL_STYLE = -16
- Global $LVS_Style = _WinAPI_GetWindowLong($hWndDesktop, $GWL_STYLE)
- Global $inifile, $iSet, $iRefresh, $SNAPTOGRID
-
- If $CmdLine[0] Then
- For $i = 1 To $CmdLine[0]
- Select
- Case StringRegExp($CmdLine[$i], '^[/-](?i)load[=:].+$|^[/-](?i)l[=:].+$') And Not $inifile
- $iSet = 1
- $inifile = StringRegExpReplace($CmdLine[$i], '^[/-](?i)load[=:]?|^[/-](?i)l[=:]?', "")
-
- Case StringRegExp($CmdLine[$i], '^[/-](?i)save[=:].+$|^[/-](?i)s[=:].+$') And Not $inifile
- $iSet = 0
- $inifile = StringRegExpReplace($CmdLine[$i], '^[/-](?i)save[=:]?|^[/-](?i)s[=:]?', "")
-
- Case StringRegExp($CmdLine[$i], '^[/-](?i)SnapToGrid[=:]\d+$|^[/-](?i)g[=:]\d+$') And $inifile
- $SNAPTOGRID = Number (StringRegExpReplace($CmdLine[$i], '^[/-](?i)SnapToGrid[=:]?|^[/-](?i)g[=:]?', "") )
-
- Case StringRegExp($CmdLine[$i], '^[/-](?i)Refresh$|^[/-](?i)r$')
- $iRefresh = 1
-
- Case StringRegExp($CmdLine[$i], '^[/-](?i)Help$|^[/-](?i)[?h]$')
- MsgBox(64,"参数帮助!","AutoIcon.exe [</load|/save>=<file>] [/G=<0|1>] [/R]" & @CRLF & "" & @CRLF & _
- "/load=file 要加载的配置文件。" & @CRLF & "/save=file 要保存的配置文件。" & @CRLF & _
- "/G=<0|1> 为“0”取消图标对齐到网格,为“1”图标对齐到网格,默认不作更改。" & @CRLF & "/R 相当于桌面右键“刷新”")
- Exit
- Case Not $inifile
- $inifile = $CmdLine[$i]
- If FileExists($inifile) Then $iSet = 1
- EndSelect
- Next
- Else
- If Not IsDeclared("iMsgBoxAnswer") Then Dim $iMsgBoxAnswer
- $iMsgBoxAnswer = MsgBox(547,"注意!","" & @CRLF & "选“是”保存桌面图标位置信息到文件" & @CRLF & "" & @CRLF & "选“否”从文件读取并排列桌面图标。")
- Select
- Case $iMsgBoxAnswer = 6 ;Yes
- $inifile = FileSaveDialog( "输入一个文件名。", @ScriptDir, "配置文件(*.ini)", 2)
- If @error Or Not $inifile Then Exit
- $iSet = 0
- If Not StringRegExp($inifile, "\.ini$") Then $inifile &= ".ini"
- Case $iMsgBoxAnswer = 7 ;No
- $inifile = FileOpenDialog( "选择一个文件。", @ScriptDir, "配置文件(*.ini)", 1)
- If @error Or Not $inifile Then Exit
- $iSet = 1
- Case $iMsgBoxAnswer = 2 ;Cancel
- Exit
- EndSelect
- EndIf
-
- If $iSet Then
- If $SNAPTOGRID Then $SNAPTOGRID = $LVS_EX_SNAPTOGRID
- If IsNumber ($SNAPTOGRID) Then _SendMessage($hWndDesktop, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_SNAPTOGRID, $SNAPTOGRID)
- If BitAND($LVS_Style, $LVS_AUTOARRANGE) Then _WinAPI_SetWindowLong($hWndDesktop, $GWL_STYLE, $LVS_Style - $LVS_AUTOARRANGE );取消自动排列
-
- If $iRefresh Then DllCall("shell32.dll", "none", "SHChangeNotify", "long", 0x8000000, "int", 0, "ptr", 0, "ptr", 0);刷新图标
- _SaveAndLoadIconPos($inifile, 1)
- ;Run("RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters");刷新桌面(通过复制文件的方式替换壁纸文件适用)
- Else
- _SaveAndLoadIconPos($inifile)
- EndIf
-
- Func _SaveAndLoadIconPos($iFile, $iLoad = 0)
- Local $iCount, $iIndex, $sName, $xy
- If Not IsHWnd($hWndManager) Then $hWndManager = WinGetHandle("Program Manager")
- If Not IsHWnd($hWndDesktop) Then $hWndDesktop = ControlGetHandle("Program Manager","",1)
- $iCount = ControlListView($hWndManager, "", $hWndDesktop, "GetItemCount")
- If @error Then
- SetError(1)
- Return 0
- EndIf
- If Not $iLoad And FileExists($iFile) Then IniDelete($iFile, "图标位置")
- For $iIndex = 0 to $iCount - 1
- $sName = ControlListView($hWndManager, "", $hWndDesktop,"GetText", $iIndex)
- If $iLoad Then
- $xy = StringSplit (IniRead ($iFile, "图标位置", $sName, ""), ",")
- If $xy[0] = 2 Then _
- _SendMessage($hWndDesktop, $LVM_SETITEMPOSITION, $iIndex, BitOR(BitShift($xy[2], -16), BitAND($xy[1], 0xffff) ) )
- Else;保存图标信息
- $xy = _GUICtrlListView_GetItemPosition($hWndDesktop, $iIndex)
- IniWrite($iFile, "图标位置", $sName, $xy[0] & "," & $xy[1] )
- EndIf
- Next
- Return 1
- EndFunc
复制代码 |
绿茶, 网吧, 3389, 服务器, 3389, 3389, 3389, ndeer, 极速版, 诺德尔, 3389, VGA, 服务器, 3389, 3389, 3389, DNF, 锐起, 3389, 网吧, 网吧系统, 3389, 服务器, 网吧, 网管, 网维大师, 3389, 系统封装,
|