分享

Excel 请问vbs有没有类似doevents的函数?

 新猫 2014-06-24

看看这样的代码有没有用(利用了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!"

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多