jiaosc 发表于 2021-5-23 18:40:56

求助:如何获取指定程序的桌面快捷图标的坐标信息?已解决

本帖最后由 jiaosc 于 2021-5-28 09:03 编辑

求助:如何获取指定程序的桌面快捷图标的坐标信息?

jiaosc 发表于 2021-5-23 18:53:01

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,获取图标在控件中的座标 返回数组 =x座标 =y座标
;以下的 $sName   $xy   $xy 三个值就是你要的
    ConsoleWrite($iIndex & " = " & $sName & "|" & $xy & "|" & $xy & @CRLF)
Next
ConsoleWrite("---------------结束---------------------" & @CRLF)

上述程序语句中: $sName = ControlListView($hWndManager, "", $hWndDesktop, "GetText", $iIndex) ;根据图标排列的ID获取图标的名称; 这一句程序报错
不知何故?其他均正常。求大师指点。

yuantian 发表于 2021-5-23 21:22:03

版本:3.3.15.0
Win10 x64   2楼的代码可用

jiaosc 发表于 2021-5-24 08:11:27

本帖最后由 jiaosc 于 2021-5-24 08:13 编辑

WIN7环境下语句 $sName = ControlListView($hWndManager, "", $hWndDesktop, "GetText", $iIndex) ;根据图标排列的ID获取图标的名称报错见图。不知如何解决,求助!D:\NezipSun证券分析师(网上股票交易系统4.0版)\交易屏幕截图、202105240807全屏-01.jpg

tubaba 发表于 2021-5-27 10:12:30

帮助中有提到,在X64系统中,使用control系列命令最好使用与系统架构相匹配的版本,64位的系统用64位的Autoit,32位的系统用32位的autoit, 这是个人记忆,可能用错,最好去帮助里仔细查看

tubaba 发表于 2021-5-27 10:38:06


jiaosc 发表于 2021-5-28 06:41:41

请问64位的系统用64位的Autoit和32位的系统用32位的autoit这两种版本在什么地方可以下载?

jiaosc 发表于 2021-5-28 09:01:39

深表感谢!

tubaba 发表于 2021-5-27 10:38


谢谢大师的指教,确实如大师所说,就是Autoit的版本问题,换用64位的Autoit后问题已解决。再次深表感谢!

chzj589 发表于 2021-5-28 10:46:18

jiaosc 发表于 2021-5-28 09:01
谢谢大师的指教,确实如大师所说,就是Autoit的版本问题,换用64位的Autoit后问题已解决。再次深表感谢!

可运行,运行:D:\AutoIt3\autoit3_x64.exe(3.3.14.2),Win7x64



页: [1]
查看完整版本: 求助:如何获取指定程序的桌面快捷图标的坐标信息?已解决