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" 这句,它似乎无法有效切换焦点到记事本。 你可以试一下。
展开
 我来答
冰峰护法
2009-03-20 · TA获得超过1683个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:277万
展开全部
问题在这里!!
WshShell.AppActivate "Untitled - Notepad"

你是英文版的操作系统啊??
Untitled - Notepad
这个就是你窗口的标题!你要保证没有写错!区分大小写的!
还有你可以考虑只写"Untitled"只要是窗口标题的前几个字母就行了!这样就可以了!
我试过了是可以的!!

还有,要把sleep 1000时间缩短,50就够了!!
你等了两秒,把窗口激活了,再等一秒什么意思,应在在激活窗口后,尽快发送键值!!
Luma
2009-03-19 · TA获得超过9828个赞
知道大有可为答主
回答量:1647
采纳率:50%
帮助的人:1121万
展开全部
不好意思,误会楼主啦,我试验了一下,确实无法激活(winxpsp3系统)。至于你说的“任务栏图标在闪”那不是AppActivate的作用,是windows的功能,他会自动把新打开的无焦点程序闪几下让你知道。
####################################
楼主真是奇怪,你干吗非要在Sleep 2000之后用鼠标在桌面上点一下呢?本来WshShell.AppActivate "Untitled - Notepad" 激活记事本到前台,语句工作就完成了,它又不是一直在检测窗口是否一直在前台!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ARTERIOSCLEROS
2009-03-19 · TA获得超过4185个赞
知道大有可为答主
回答量:1672
采纳率:0%
帮助的人:2450万
展开全部
答案补充:嗯,我试过了,但是在我的机器上能够正常运行,也就是只要窗口不被最小化就能成功发送按键。楼主的问题如果不是前述原因的话就真不知道怎么回事了。
=======================
首次回答:AppActivate功能是激活指定的窗口,而不会对窗口的大小(最大化、最小化)造成影响。而Sendkeys语句能发送按键的必要条件是窗口不但要激活,而且不能是最小化模式。所以肯定是某个操作让Notepad窗口最小化了,所以虽然激活了窗口仍然不能发送按键。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式