看看这样的代码有没有用(利用了WMI) '指定计算机名,圆点代表本地计算机 strComputer = "." '创建一个通往WMI服务的连接,将针对该连接的引用保存于objWMIService变量,且指定了一个WMI名称空间,即/root/cimv2名称空间 Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2") do '循环进行事件查询 '对事件产生进行监控的WQL语句,WITHIN 5子句表示每隔五秒对事件进行查询,以秒为单位。ISA 表示所需监控的对象是Win32_Process类,TargetInstance.Name = 'notepad.exe'表明仅对notepad.exe进行监控 , '这样其实可以认为等某程序出现5秒后重新执行vbs代码,效果和doevents就差不多了。 strWQL = "SELECT * " & _ "FROM __InstanceCreationEvent " & _ "WITHIN 5 " & _ "WHERE TargetInstance ISA 'Win32_Process' " & _ "AND TargetInstance.Name = 'notepad.exe'" '运行查询语句,启动监控 Set objEventSource = objWMIService.ExecNotificationQuery(strWQL) '使脚本处于暂停状态直到程序接收到下一个事件 Set objEventObject = objEventSource.NextEvent() '如果出现了notepad则退出监视 exit do loop '与do语句一起构成循环 '相关处理内容,以下演示等待3秒然后模拟输入口令并登陆,最后给出欢迎词 Set WshShell=WScript.CreateObject("WScript.Shell") WshShell.AppActivate "无标题 - 记事本" '使记事本程序获得焦点 WshShell.SendKeys "Wait 3 second...{enter}" '开始模拟按键了 wscript.sleep 3000 WshShell.SendKeys "Login:username{enter}" wscript.sleep 500 wshshell.sendkeys "Password:" wscript.sleep 500 wshshell.sendkeys "*" wscript.sleep 100 wshshell.sendkeys "*" wscript.sleep 100 wshshell.sendkeys "*" wscript.sleep 100 wshshell.sendkeys "*" wscript.sleep 100 wshshell.sendkeys "*{enter}" wscript.sleep 100 wshshell.sendkeys "{bs 48} Hello,world!"
|