g1325 发表于 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)))这种代码不要,因为不是用鼠标操作图标移动的,没有效果 。

大家帮帮忙吧。

g1325 发表于 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);拖动图标

g1325 发表于 2009-12-1 13:22:06

Local $xy
$xy = _GUICtrlListView_GetItemPosition($ctrl, 0);取得桌面第一个图标的座标
$x1 = ($xy+16)
$y1 = ($xy+16)
$x2 = ($xy+32)
$y2 = ($xy+32)
WinActivate ($handle,"");激活桌面
MouseClickDrag("",$x1,$y1,$x2,$y2,0);拖动图标
MouseClickDrag("",$x2,$y2,$x1,$y1,0);还原图标原来位置

0633zhou 发表于 2009-12-25 00:26:08

不 错学习了

健忘症重度患者 发表于 2016-5-23 17:03:19

围观一个,应该用得上
页: [1]
查看完整版本: 如何取得当前选中的桌面图标的座标