本帖最后由 ipgss 于 2009-8-17 09:40 编辑
Help文档里说“作为 32-位的应用程序,一些命令运行于64-位 Windows 操作系统(IA64 或者 X64 机器). 如:"GetText" 和 "FindItem" 不工作.” 可是现在必须得用到FindItem,在64位系统下就出错,使用了DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1)
也不好用。
例如,在E盘有文件夹test,test下有aa和bb文件夹,现查找bb文件夹,代码如下。
#include <GuiListView.au3>
$searchName = "bb"
ShellExecute("E:\test")
Sleep(500)
$Title = WinGetTitle("[active]")
$hWnd = WinGetHandle($Title)
ControlListView($hWnd, "", "SysListView321", "SelectClear")
$iItem = ControlListView($hWnd, "", "SysListView321", "FindItem", $searchName)
MsgBox(0, "$Item", $iItem)
在32bit系统下返回值为1,在64bit下返回-1
改为:
DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1)
$iItem = ControlListView($hWnd, "", "SysListView321", "FindItem", $searchName)
DllCall("kernel32.dll", "int", "Wow64EnableWow64FsRedirection", "int", 1)
也同样不好用。
该怎么做啊,不要使用FileOpenDialog等,得使用FindItem这个功能,在64下可怎么办啊,该如何解决啊,请高手们多多帮忙啊。 |