我是VBscript的新手;就像我在大约一个半小时前刚开始一样,但我只需要一个超级简单的程序。它运行Do Until循环,我希望它在按空格键时停止。我做了其他一切,我只需要知道是否/如何检测击键。提前谢谢!
答案 0 :(得分:0)
您需要将脚本放入hta文件(基本上是具有程序权限的网页),请参阅http://msdn.microsoft.com/en-us/library/ms536473(VS.85).aspx。然后为空格键设置一个事件处理程序。而不是do循环做一个计时器,并做一个计时器滴答。您的空格键事件处理程序取消了计时器。
onkeydown活动
用户按键时触发。
语法
内联HTML <ELEMENT onkeydown = "handler" ... >
所有平台
事件属性object.onkeydown = handler
仅限JScript
object.onkeydown = GetRef("handler")
仅限Visual Basic Scripting Edition(VBScript)5.0或更高版本
Named script <SCRIPT FOR = object EVENT = onkeydown>
仅限Internet Explorer
活动信息
气泡是的
取消是
调用按任意键盘键。
默认操作返回一个数字,指定按下的键的keyCode。
setInterval方法
每次经过指定的毫秒数时计算表达式。
语法
iTimerID = window.setInterval(vCode, iMilliSeconds [, sLanguage])
参数
vCode必需。 Variant,指定函数指针或字符串,指示在指定的时间间隔过去后要执行的代码。 iMilliSeconds必需。整数,指定毫秒数。 sLanguage可选。用于指定LANGUAGE属性的任何一个可能值的字符串。
返回值
整数。返回使用clearInterval方法取消计时器的标识符。
说明
setInterval方法连续计算指定的表达式,直到使用clearInterval方法删除计时器。
答案 1 :(得分:0)
这是一个有效的,不可取的(建议你),选项。但每次检查按键时,它都会生成一行写入控制台(跳转到下一行)。
Function GetParentProcessId()
Dim processesList, process
Set processesList = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set processesList = processesList.ExecQuery("SELECT * FROM Win32_Process WHERE (Name = 'cscript.exe') AND Commandline LIKE '%"+WScript.ScriptName+"%'" )
For Each process in processesList
GetParentProcessId = process.ParentProcessId
Next
End Function
Dim parentProcessId
parentProcessId = GetParentProcessId()
Dim shell
Set shell = WScript.CreateObject("WScript.Shell")
Dim input, i
i=0
Do While True
WScript.StdOut.Write "Press space to stop process. Step [" & i & "]" & vbCR
i = i + 1
If (i Mod 10) = 0 Then
shell.AppActivate parentProcessId
shell.SendKeys "~"
input = WScript.StdIn.ReadLine()
If input = " " Then
Exit Do
End If
End If
WScript.Sleep 50
Loop
WScript.StdOut.WriteLine vbCFLF & "Process ended"
WScript.Quit