5月292016
Au3获取桌面图标名称与坐标
#include <GuiListView.au3>
Global $hWndManager = WinGetHandle("Program Manager") ;获取桌面句柄
Global $hWndDesktop = ControlGetHandle("Program Manager", "", 1) ;获取桌面列表控件句柄
$iCount = ControlListView($hWndManager, "", $hWndDesktop, "GetItemCount") ;获取桌面列表中的数量(也就是图标的数量)
;测试输出
ConsoleWrite("序号 = " & "图标名称|X坐标|y坐标" & @CRLF)
For $iIndex = 0 To $iCount - 1
$sName = ControlListView($hWndManager, "", $hWndDesktop, "GetText", $iIndex) ;根据图标排列的ID获取图标的名称
$xy = _GUICtrlListView_GetItemPosition($hWndDesktop, $iIndex) ;根据图标排列的ID,获取图标在控件中的座标 返回数组 [0]=x座标 [1]=y座标
;以下的 $sName $xy[0] $xy[1] 三个值就是你要的
ConsoleWrite($iIndex & " = " & $sName & "|" & $xy[0] & "|" & $xy[1] & @CRLF)
Next
ConsoleWrite("---------------结束---------------------" & @CRLF)
-------------------------------------------------------
;应该网友要求,出一成品 2022-03-09
;图标保存路径
Dim $ini = @ScriptDir & "\IcoXY.ini"
Global $hWndManager = WinGetHandle("Program Manager") ;获取桌面句柄
Global $hWndDesktop = ControlGetHandle("Program Manager", "", 1) ;获取桌面列表控件句柄
Global $iCount = ControlListView($hWndManager, "", $hWndDesktop, "GetItemCount") ;获取桌面列表中的数量(也就是图标的数量)
IniReadSection($ini, "图标")
if @error <> 0 then
;当前如果没有配置文件
_SaVe() ;保存当前桌面图标
exit MsgBox(0,"提示","当前为第一次运行,已保存桌面图标的位置!")
EndIf
;对图标排序 ,恢复图标
_SetPOS()
;对图标排序
Func _SetPOS()
;by: 绿色风 https://www.jianyiit.com/post-232.html
ConsoleWrite("序号 = " & "图标名称|X坐标|y坐标" & @CRLF)
For $iIndex = 0 To $iCount - 1
$sName = ControlListView($hWndManager, "", $hWndDesktop, "GetText", $iIndex) ;根据图标排列的ID获取图标的名称
Local $arr = StringSplit(IniRead($ini, "图标", $sName, 0), "|")
If $arr[0] = 2 Then
_GUICtrlListView_SetItemPosition($hWndDesktop, $iIndex, $arr[1], $arr[2])
Else
;如果没有记录就放到右边
_GUICtrlListView_SetItemPosition($hWndDesktop, $iIndex, @DesktopWidth, 0)
EndIf
Next
EndFunc ;==>_SetPOS
;保存当前图标位置
Func _SaVe()
;by: 绿色风 https://www.jianyiit.com/post-232.html
ConsoleWrite("序号 = " & "图标名称|X坐标|y坐标" & @CRLF)
For $iIndex = 0 To $iCount - 1
$sName = ControlListView($hWndManager, "", $hWndDesktop, "GetText", $iIndex) ;根据图标排列的ID获取图标的名称
$xy = _GUICtrlListView_GetItemPosition($hWndDesktop, $iIndex) ;根据图标排列的ID,获取图标在控件中的座标 返回数组 [0]=x座标 [1]=y座标
;以下的 $sName $xy[0] $xy[1] 三个值就是你要的
ConsoleWrite($iIndex & " = " & $sName & "|" & $xy[0] & "|" & $xy[1] & @CRLF)
IniWrite($ini, "图标", $sName, $xy[0] & "|" & $xy[1])
Next
ConsoleWrite("---------------结束---------------------" & @CRLF)
EndFunc ;==>_SaVe
扫描二维码,在手机上阅读
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!