本帖最后由 tjztbk 于 2016-1-6 23:39 编辑
根据22楼“yhjfirst”的建议用API就没问题了!
-------------------------以下为原帖内容-------------------------------------------
发现在win10系统下,所有带有盾牌图标(如下图,应该和UAC用户帐户控制有关,当然我的判断不一定正确)的程序,都无法用Autoit代码控制操作!
对窗口控件操作用ControlClick、用激活窗口后用Send都不行,我测试代码在正常运行,就是不起作用!
甚至我将代码改为激活窗口,然后用MouseClick 执行鼠标点击操作都不行(鼠标不动)
加#RequireAdmin了也是不行!
各路高手有没有办法啊!有装Win10的帮我测试一下啊!
比如下面代码:Opt("WinTitleMatchMode", 2) ;窗口匹配模式:1=开头, 2=子串, 3=完全, 4=高级 , -1 to -4=Nocase
;在Win10系统下,程序上面有盾牌的用run无法运行; 改用ShellExecute可以运行
;~ If Not Run("汉化补丁.exe") Then
;~ MsgBox(4096, "错误", "找不到汉化程序“汉化补丁.exe”,汉化出现错误")
;~ Exit
;~ EndIf
; 改用ShellExecute后可以
If Not ShellExecute("汉化补丁.exe") Then
MsgBox(4096, "错误", "找不到汉化程序“汉化补丁.exe”,汉化出现错误")
Exit
EndIf
;在Win10系统下,以下代码运行正常,但操作无效,在win7系统正常。
While 1
Sleep(100);汉化程序未安装,点击开始安装
If WinExists("汉化补丁", "开始") Then
WinWait("汉化补丁", "开始")
ControlClick("汉化补丁", "开始", "[CLASS:Button; INSTANCE:1]");这部分改为激活窗口,然后用send模拟键盘操作也是无效
MsgBox(0, "测试1", "测试1:是否运行到这里!")
WinWait("汉化补丁", "完成");安装完成,退出汉化程序
ControlClick("汉化补丁", "完成", "[CLASS:Button; INSTANCE:1]")
MsgBox(0, "测试2", "测试2:是否运行到这里!")
ExitLoop
EndIf
Sleep(100);汉化程序已安装或主程序未安装,,退出汉化程序
If WinExists("汉化补丁", "关闭") Then
WinWait("汉化补丁", "关闭")
ControlClick("汉化补丁", "关闭", "[CLASS:Button; INSTANCE:1]")
MsgBox(0, "测试3", "测试3:是否运行到这里!")
ExitLoop
EndIf
WEnd
调用的“汉化补丁程序.EXE”这程序在下面这个共享中有!
共享链接:http://pan.baidu.com/s/1eRguACa
各路高手有空帮我看看! |