Board logo

标题: [问题求助] VBS如何实现某个窗口总在最前端,也就是某个窗口总是当前活动窗口 [打印本页]

作者: xiaoxiami    时间: 2012-2-8 17:40     标题: VBS如何实现某个窗口总在最前端,也就是某个窗口总是当前活动窗口

本帖最后由 xiaoxiami 于 2012-2-8 17:42 编辑

问题如下:
     目前我使用VBS的run启动了一个test.exe的窗口,然后需要在窗口里面输入命令来执行某些操作,我是利用SendKeys来模拟键盘的输入,但是现在遇到一个问题,我在用SendKeys输入命令之前利用了sleep来进行2~3秒的延时,然后在执行SendKeys来输入命令,但是在这个2~3秒的延时时很可能会弹出一个其他窗口导致test.exe不是当前的活动窗口了,sleep进行延时一定是需要使用的,因为我启动test.exe窗口需要一点时间。如何使用VBS解决这个问题。
     还想请教一个输入法的问题,我如何保证在启动一个窗口之后输入命令之前保证这个窗口使用的输入法是英文输入法,设置默认输入法除外,因为不是每台电脑的默认输入法都是英文的。也就是在用SendKeys来模拟键盘输入之前确保输入法是英文的。
作者: ivor    时间: 2012-2-8 19:59

  1. AppActivate 方法
  2. 请参阅
  3. 运行脚本 | WshShell 对象 | SendKeys 方法
  4. 激活应用程序窗口。
  5. object.AppActivate title
复制代码

作者: xiaoxiami    时间: 2012-2-9 15:17

回复 2# ivor


    嗯,这个我昨天后然自己查找到了AppActivate这个方法,但是昨天根据窗口的标题来激活窗口,但是AppActivate不起作用,想利用PID来激活窗口,请问如何自动获取某个已运行的进程的PID号呢?
   另外,我的输入法的问题有想法么,大侠!
作者: powerbat    时间: 2012-2-9 15:22

用SendKeys,失败是必须的、肯定的、绝对的
作者: Demon    时间: 2012-2-9 15:47

用SendKeys,失败是必须的、肯定的、绝对的
powerbat 发表于 2012-2-9 15:22


+10086
作者: xiaoxiami    时间: 2012-2-9 17:34

回复 4# powerbat


    为什么呢?还望指教,假如不用SendKeys模拟输入,那么使用什么命令来输入呢?谢谢
作者: samsinn    时间: 2012-2-9 21:10

试试我的方法,利用剪切板粘贴
  1. str="\r\n" '这是换行符
  2. strkey="1好不好"&str
  3. strkey=strkey &"2-Nice"
  4. Set mShell = CreateObject("wscript.Shell")
  5. mshell.run "notepad",1
  6. mshell.run "mshta ""javascript:clipboardData.setData('text','"&strkey&"');close();""",0
  7. wsh.Sleep 1000
  8. mShell.sendkeys "^v",true
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2