vbs中使用AppActivate仍然无法获得焦点的问题 10
原.vbs文件代码如下:DimWshShellSetWshShell=WScript.CreateObject("WScript.Shell")WshShell.Run"...
原.vbs文件代码如下:
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 2000
WshShell.AppActivate "Untitled - Notepad"
WScript.Sleep 1000
WshShell.SendKeys "hello!!!!"
在Sleep 2000之后,如果用鼠标在桌面上点一下(或者其他什么方法让记事本丢失焦点),然后运行到AppActivate这一步时可以看到记事本的任务栏图标在闪,似乎是被激活了的样子,但是后面的hello这些字符依然被send到了桌面上,也就是说在AppActivate之后焦点仍然不在记事本里,请问在vbs中如何用AppActivate激活指定窗口以实现SendKeys功能。
这个故障不清楚和我的系统有无关系,在用windows7 7057版本,不过我用别人的XP中文版试过也不行。如果您是中文版系统请把代码中"Untitled - Notepad"替换为"无标题 - 记事本"。
先谢过!
回2楼:不是最小化,窗口是可见的,能看到光标在闪,就是无法sendkeys。
您可以用我给出的源代码尝试一下。
回Luma:事情不是你想的那么简单,这只是一个测试程序。 而且你误会了我的意思:我是说在它sleep2000的时候让记事本失焦,然后才到WshShell.AppActivate "Untitled - Notepad" 这句,它似乎无法有效切换焦点到记事本。 你可以试一下。 展开
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 2000
WshShell.AppActivate "Untitled - Notepad"
WScript.Sleep 1000
WshShell.SendKeys "hello!!!!"
在Sleep 2000之后,如果用鼠标在桌面上点一下(或者其他什么方法让记事本丢失焦点),然后运行到AppActivate这一步时可以看到记事本的任务栏图标在闪,似乎是被激活了的样子,但是后面的hello这些字符依然被send到了桌面上,也就是说在AppActivate之后焦点仍然不在记事本里,请问在vbs中如何用AppActivate激活指定窗口以实现SendKeys功能。
这个故障不清楚和我的系统有无关系,在用windows7 7057版本,不过我用别人的XP中文版试过也不行。如果您是中文版系统请把代码中"Untitled - Notepad"替换为"无标题 - 记事本"。
先谢过!
回2楼:不是最小化,窗口是可见的,能看到光标在闪,就是无法sendkeys。
您可以用我给出的源代码尝试一下。
回Luma:事情不是你想的那么简单,这只是一个测试程序。 而且你误会了我的意思:我是说在它sleep2000的时候让记事本失焦,然后才到WshShell.AppActivate "Untitled - Notepad" 这句,它似乎无法有效切换焦点到记事本。 你可以试一下。 展开
展开全部
问题在这里!!
WshShell.AppActivate "Untitled - Notepad"
你是英文版的操作系统啊??
Untitled - Notepad
这个就是你窗口的标题!你要保证没有写错!区分大小写的!
还有你可以考虑只写"Untitled"只要是窗口标题的前几个字母就行了!这样就可以了!
我试过了是可以的!!
还有,要把sleep 1000时间缩短,50就够了!!
你等了两秒,把窗口激活了,再等一秒什么意思,应在在激活窗口后,尽快发送键值!!
WshShell.AppActivate "Untitled - Notepad"
你是英文版的操作系统啊??
Untitled - Notepad
这个就是你窗口的标题!你要保证没有写错!区分大小写的!
还有你可以考虑只写"Untitled"只要是窗口标题的前几个字母就行了!这样就可以了!
我试过了是可以的!!
还有,要把sleep 1000时间缩短,50就够了!!
你等了两秒,把窗口激活了,再等一秒什么意思,应在在激活窗口后,尽快发送键值!!
展开全部
不好意思,误会楼主啦,我试验了一下,确实无法激活(winxpsp3系统)。至于你说的“任务栏图标在闪”那不是AppActivate的作用,是windows的功能,他会自动把新打开的无焦点程序闪几下让你知道。
####################################
楼主真是奇怪,你干吗非要在Sleep 2000之后用鼠标在桌面上点一下呢?本来WshShell.AppActivate "Untitled - Notepad" 激活记事本到前台,语句工作就完成了,它又不是一直在检测窗口是否一直在前台!
####################################
楼主真是奇怪,你干吗非要在Sleep 2000之后用鼠标在桌面上点一下呢?本来WshShell.AppActivate "Untitled - Notepad" 激活记事本到前台,语句工作就完成了,它又不是一直在检测窗口是否一直在前台!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案补充:嗯,我试过了,但是在我的机器上能够正常运行,也就是只要窗口不被最小化就能成功发送按键。楼主的问题如果不是前述原因的话就真不知道怎么回事了。
=======================
首次回答:AppActivate功能是激活指定的窗口,而不会对窗口的大小(最大化、最小化)造成影响。而Sendkeys语句能发送按键的必要条件是窗口不但要激活,而且不能是最小化模式。所以肯定是某个操作让Notepad窗口最小化了,所以虽然激活了窗口仍然不能发送按键。
=======================
首次回答:AppActivate功能是激活指定的窗口,而不会对窗口的大小(最大化、最小化)造成影响。而Sendkeys语句能发送按键的必要条件是窗口不但要激活,而且不能是最小化模式。所以肯定是某个操作让Notepad窗口最小化了,所以虽然激活了窗口仍然不能发送按键。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询