• 歡迎訪問奇跡の海網站,本站不上傳任何資源,所有資源均來自于網絡,歡迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下載資源為網絡上收集整理而來,并且以計算機技術研究交流為目的,版權歸原作者所有,僅供大家參考,學習,不存在任何商業目的與商業用途.
  • 本站系統鏡像均來自于官方原版,ed2k可視為P2P下載鏈接。所有操作系統默認均為試用版,如有正版密鑰可以有效激活,本站不提供任何激活和相關服務。

AutoIt3(au3)源碼-封裝后自動記憶桌面圖標位置然后在部署完成后自行還原呢

AutoIT3 奇跡の海 2年前 (2017-11-03) 582次瀏覽 已收錄 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,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
中国福利彩票36选7开奖结果