lele9013 发表于 2012-3-22 00:52:16

这段代码怎么兼容64位系统

Func _GetShortcutPos()
      Local $hListView = ControlGetHandle('Program Manager', 'FolderView', 'SysListView321'), $ix = 0
      Local $aShortcutPos
      While 1
                $aRect = _GUICtrlListView_GetItemRect($hListView, $ix)
                If $aRect = 0 And $aRect = 0 And $aRect = 0 Then ExitLoop
                If ControlListView('Program Manager', 'FolderView', 'SysListView321', 'GetText', $ix) = $sShortcut Then
                        $aShortcutPos = $aRect + 60
                        $aShortcutPos = $aRect
                        ExitLoop
                EndIf
                $ix += 1
      WEnd
      If $aShortcutPos = 0 And $aShortcutPos = 0 Then Return SetError(1)
      Return $aShortcutPos
EndFunc   ;==>_GetShortcutPos



这段在桌面找图标的代码在64位系统上出错, 必须用64bit编译或运行才通过

用x86运行会出错,不知道可以解决吗

ceoguang 发表于 2012-3-22 06:49:51

原因在于_GUICtrlListView_GetItemRect
跨进程操作listview,指针要求位于目标进程
32位进程不能操作64位进程
反之亦然.

zldfsz 发表于 2012-3-22 08:53:06

如果问题解决了请修改标题加【已解决】,看到楼主发的很多贴,问题解决了都没修改标题建议楼主认真看看这几篇帖子
http://www.autoitx.com/thread-10945-1-1.html
http://www.autoitx.com/thread-18544-1-1.html
页: [1]
查看完整版本: 这段代码怎么兼容64位系统