Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript Sendkeys在某些应用程序中不起作用_Vbscript_Automation_Windows 10_Window_Sendkeys - Fatal编程技术网

Vbscript Sendkeys在某些应用程序中不起作用

Vbscript Sendkeys在某些应用程序中不起作用,vbscript,automation,windows-10,window,sendkeys,Vbscript,Automation,Windows 10,Window,Sendkeys,我最近在谷歌上搜索发现,像这样的工具可以通过VBScript或AutoIt脚本自动扫描和修复注册表错误 由于我更喜欢本机工具和库,因此我创建了一个VBScript来自动执行注册表清理过程(直到最后一次单击按钮,因为按钮太多,无法自动执行),如下所示: On Error Resume Next Set WshShell = WScript.CreateObject("WScript.Shell") Set UsrEnvDmn = WshShell.Environment("User") UsrEn

我最近在谷歌上搜索发现,像这样的工具可以通过VBScript或AutoIt脚本自动扫描和修复注册表错误

由于我更喜欢本机工具和库,因此我创建了一个VBScript来自动执行注册表清理过程(直到最后一次单击按钮,因为按钮太多,无法自动执行),如下所示:

On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
Set UsrEnvDmn = WshShell.Environment("User")
UsrEnvDmn("CclnrInstDir") = "C:\Program Files\CCleaner"
WshShell.Run """%CclnrInstDir%\\CCleaner64.exe"" /Registry"
WScript.Sleep 1000 : WshShell.AppActivate "CCleaner"
WScript.Sleep 2000 : WshShell.SendKeys "%s"
WScript.Sleep 5000 : WshShell.SendKeys "%f"
Set WshShell = Nothing : Set UsrEnvDmn = Nothing
但问题是,一旦CCLeaner打开并进入焦点,
Sendkeys
功能就不会在窗口中单击/选择任何按钮或选项。如果我手动按下
Alt+s
,那么扫描过程确实开始了,但我迫切需要自动化这件事,如果可能的话,直到注册表清理过程的最后


有人能对此提供指导吗?

请参阅的备注部分。当您使用
AppActivate
时,您的脚本必须至少遵守其中一条规则(因为这是
AppActivate
所调用的)。你一直在睡觉,失去了设置前景窗口的权利。有关更好的方法,请参阅CCleaner文档

系统限制哪些进程可以设置前台窗口。A. 只有满足以下条件之一时,进程才能设置前景窗口 条件是正确的:

•该流程是前台流程

•该流程由前台流程启动

•流程收到最后一个输入事件

•没有前台流程

•流程正在调试中

•前台流程不是现代应用程序或起点 屏幕

•前景未锁定(请参阅LockSetForegroundWindow)

•前台锁定超时已过期(请参阅 SPI_GETFOREGROUNDLOCKTIMEOUT(在系统参数sinfo中)

•没有激活的菜单


Pal,首先你共享了CCleaner命令行参数的链接,在这一页中,没有任何SetForegroundWindow部分,其次,我也检查了手册中的其他链接,但是没有任何链接提到任何使用AppActivate与CCleaner的规则,所以我不知道你在说什么文档,但是CCLeaner文档中肯定没有。。。将提供有关VBscript函数AppActivate的详细信息的链接放入…很久很久以前,程序可以不受限制地设置前景窗口。因此,程序滥用了它,或者启动速度太慢,用户感到厌烦,开始做其他事情,然后弹出一个窗口来烦用户。因此,开始应用规则来阻止程序窃取焦点。此外,您不能
sendkeys
发送给特权更高的应用程序。这是在Windows Vista中购买的,用于通过向以管理员身份运行的程序发送密钥来防止脚本冒充管理员。同时以用户和管理员身份键入
cleanmgr/?
。这是唯一安全的方法。