找回密码
 加入
搜索
查看: 2030|回复: 4

如何取得当前选中的桌面图标的座标

[复制链接]
发表于 2009-12-1 01:50:26 | 显示全部楼层 |阅读模式
本帖最后由 g1325 于 2009-12-1 12:01 编辑

弄个排桌面图标的东西,但是有时候排好了,点右键刷新一下,图标就又乱了

经测试,在取消自动排列后,只要用鼠标拖动任一图标移动一下,就可以刷新后不乱,现在 就是问
如何取得当前选中的桌面图标的座标,然后将鼠标移动到这个座标上,并拖动这个图标左移或或移少许。注意,是用鼠标拖,
类似
_SendMessage($hWndDesktop, $LVM_SETITEMPOSITION, $i_index, BitOR(BitShift($i_y, -16), BitAND($i_x, 0xFFFF)))
这种代码不要,因为不是用鼠标操作图标移动的,没有效果 。

大家帮帮忙吧。

评分

参与人数 1金钱 +20 收起 理由
afan + 20 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2009-12-1 11:44:21 | 显示全部楼层
搞定了,只要先把图标移动到一个座标上,然后模拟鼠标操作就行了
$hWndDesktop = ControlGetHandle("Program Manager","",1) 
$i_index = 0
$i_x = 21
$i_y = 3
_SendMessage($hWndDesktop, $LVM_SETITEMPOSITION, $i_index, BitOR(BitShift($i_y, -16), BitAND($i_x, 0xFFFF)));移动桌面第一个图标
;WinActivate ($handle,"");激活桌面
;ControlListView($handle,"",$ctrl,"Select",0,0) ;选中桌面第一个图标
;MouseMove(41,21,0);移动鼠标到第个图标
MouseClickDrag("",41,45,21,25,0);拖动图标
 楼主| 发表于 2009-12-1 13:22:06 | 显示全部楼层
Local $xy
$xy = _GUICtrlListView_GetItemPosition($ctrl, 0);取得桌面第一个图标的座标
$x1 = ($xy[0]+16)
$y1 = ($xy[1]+16)
$x2 = ($xy[0]+32)
$y2 = ($xy[1]+32)
WinActivate ($handle,"");激活桌面
MouseClickDrag("",$x1,$y1,$x2,$y2,0);拖动图标
MouseClickDrag("",$x2,$y2,$x1,$y1,0);还原图标原来位置
发表于 2009-12-25 00:26:08 | 显示全部楼层
不 错  学习了
发表于 2016-5-23 17:03:19 | 显示全部楼层
围观一个,应该用得上
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-26 02:29 , Processed in 0.076727 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表