[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 20# wh1234567


    你想说什么呢?

TOP

系统找不到指定的路径。
hello
请按任意键继续. . .

TOP

回复 18# wh1234567

为了便于显示,作了少许修改,但不影响原有功能。
C:\Users\root\Desktop>type a.bat
@echo hello&pause

C:\Users\root\Desktop>type a.vbs
...
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
    Value = ws.RegRead(Hive&"\"&KeyPath&"\"&ValueName)
    WScript.Echo "Registry Value Changed: " & Value
    if CStr(Value)="29" then ws.Run "a.bat" ',0 '后面加0表示隐藏窗口运行

End Sub

C:\Users\root\Desktop>start /b cscript C:\Users\root\Desktop\a.vbs

Listening for Registry Change Events...

C:\Users\root\Desktop>reg add hklm\Software\333 /v 444 /d 28 /f
操作成功完成。

Registry Value Changed: 28

C:\Users\root\Desktop>reg add hklm\Software\333 /v 444 /d 29 /f
操作成功完成。

Registry Value Changed: 29

C:\Users\root\Desktop>


vbs运行a.bat弹出了一个窗口:
hello
请按任意键继续. . .

TOP

Listening for Registry Change Events...


脚本:        C:\Documents and Settings\Administrator\桌面\新建 文本文档 (2).vbs
行:        18
字符:        5
错误:        无法打开注册键值 "HKEY_LOCAL_MACHINE\333\444" 进行读取。
代码:        80070002
源:         WshShell.RegRead

这个代码需修正,应该是"HKEY_LOCAL_MACHINE\333" 里右边的名称"444
而不是HKEY_LOCAL_MACHINE\333\444

TOP

数值是29也不自动执行a.bat啊,咋回事?

TOP

回复 15# wh1234567


    这就是6楼问你的目的,9楼的代码正是运行后一直监视。

TOP

能不能弄成在进程里全自动监视的那种?当监视到数值变化到29就自动执行a.bat,不是运行一次监视一次,而是运行后就在进程里全自动监视

TOP

回复 12# wh1234567


    对。a.bat可用其他程序代替。

TOP

最好的办法是不是在进程里全自动监视?

TOP

本帖最后由 wh1234567 于 2012-6-4 19:18 编辑

回复 9# powerbat


    我的命令放到哪,提示是英文看不懂啊
我的命令是a.bat这个吗?是代码不行还是我不会使用

TOP

本帖最后由 wh1234567 于 2012-6-5 23:42 编辑

回复 10# tz_being


    有数值的,数值就是29也退出了不能执行a.bat

TOP

回复  tz_being

不行,闪了下就没了
另外说下,不是建立新项,而是监视那里的数值29
wh1234567 发表于 2012-6-4 15:17


你注册表的这个地方HKLM\Software\333没有数值,当然自动退出了;如果有数值29就运行你的命令了

TOP

回复 8# wh1234567
vbs
  1. Hive = "HKEY_LOCAL_MACHINE"
  2. KeyPath = "Software\333"
  3. ValueName = "444"
  4. Set ws = CreateObject("WScript.Shell")
  5. Set Sink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
  6. Set objWMIServices = GetObject("winmgmts:" & _
  7.     "{impersonationLevel=impersonate}!\\.\root\default")
  8. objWMIServices.ExecNotificationQueryAsync Sink, _
  9.     "Select * from RegistryValueChangeEvent Where " & _
  10.     "Hive = '"&Hive&"' and " & _
  11.     "KeyPath = '"&Replace(KeyPath,"\","\\")&"' and " & _
  12.     "ValueName = '"&ValueName&"'"
  13. WScript.Echo "Listening for Registry Change Events..." & vbCrLf
  14. Do : WScript.Sleep 1000 : Loop
  15. Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
  16.     Value = ws.RegRead(Hive&"\"&KeyPath&"\"&ValueName)
  17.     'WScript.Echo Value
  18.     if CStr(Value)="29" then ws.Run "a.bat",0
  19. End Sub
复制代码
1

评分人数

TOP

回复 6# powerbat

是监视

TOP

本帖最后由 wh1234567 于 2012-6-4 15:19 编辑

回复 4# tz_being

不行,闪了下就没了
另外说下,不是建立新项,而是监视那里的数值29

TOP

返回列表