• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

AutoIt3(au3)源码-封装后自动记忆桌面图标位置然后在部署完成后自行还原呢

AutoIT3 奇跡の海 2年前 (2017-11-03) 519次浏览 已收录 0个评论 扫描二维码

简介

AutoIt3(au3)源码-封装后自动记忆桌面图标位置然后在部署完成后自行还原呢
1、第一次运行,会自动按图标生成配置文件“icoSpace.ini”,第二次运行,如果检测到有”icoSpace.ini”文件存在,则自动还原桌面图标位置
2、运行程序加参数:xxx.exe /load=icoSpace.ini 会自动读取icoSpace.ini还原桌面图标位置,如果ini文件不存在,则自动创建icoSpace.ini
运行程序加参数:xxx.exe /save=icoSpace.ini 生成图标位置配置文件icoSpace.ini

源码

#NoTrayIcon 
#AutoIt3Wrapper_icon=D:\autoit3\Aut2Exe\Icons\FOLDER.ico 
;~ #AutoIt3Wrapper_Compression=4 
#AutoIt3Wrapper_UseAnsi=y 
#AutoIt3Wrapper_Res_Comment=2011-04-08, 00:00 
#AutoIt3Wrapper_Res_Description=桌面图标同步程序 
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0 
#AutoIt3Wrapper_Res_LegalCopyright=Amu 
#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 
         $inifile = @ScriptDir &"\icoSpace.ini"
         If FileExists ($inifile) Then
                $iSet = 1 
        Else
                $iSet = 0 
        EndIf
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

版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->AutoIt3(au3)源码-封装后自动记忆桌面图标位置然后在部署完成后自行还原呢!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址