绿色风's Blog
专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 作●品
  • 下●载
  • 情怀ExcelTip
5月292016

Au3获取桌面图标名称与坐标

作者:绿色风   发布:2016-5-29 10:23 Sunday   分类:源码示例   阅读:6880次   评论:0条  
#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







本文固定链接: http://www.jianyiit.com/post-232.html

blogger
该日志由 绿色风 于2016-5-29 10:23 Sunday发表在 源码示例 分类下。
版权所有:《绿色风's Blog》 → 《Au3获取桌面图标名称与坐标》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::AU3版俄罗斯方块
下一篇:AU3截不到QQ窗口图片解决方法

热门文章

相关文章

  • AU3利用shell.application获取图片的所有信息扩展信息
  • Au3按钮上带图片
  • 还记得小时候玩的16宫格游戏版吗
  • AU3内嵌IE版本控制
  • Au3简单的多线程例子
取消回复

发表评论

亲,头像对么?

13 + 75 =

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7237 条
    • 微语数量: 6 条
    • 附件总量: 388 件
  • 逝出的青春

  • 打赏"绿色风"



      扫码关注本站公众号 可搜本站内容

  • Autoit V3 脚本交流群

      常驻群1:905774875
      常驻群2:40672266


  • 链接

    • AU3中文论坛
    • Excel资料库
    • 完美者博客
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 网吧系统下载
  • 分类

    • 流●年(66)
    • 笔●记(0)
    • 脚●本(0)
    • 作品(21)
    • 学习随记(51)
    • 源码示例(68)
    • UDF(收集)(26)
    • 工作室UDF(30)
    • 工具●教程(62)
    • 教程之GDI(24)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备2021011689号-1 鄂公网安备42102302000078号 sitemap