使用批处理文件按键盘键

我想开发一个批处理文件,它可以自动按左键和右键n次,中间有一些停顿。谁能帮我解决这个问题?

P.S:我试着安装自动键盘软件,但由于我在工作,所以无法安装。我需要这个程序在我的办公室电脑上工作。

哇!这意味着你必须学习一种不同的编程语言,只是为了向键盘发送两个键?有更简单的方法让你实现同样的事情。:-)

下面的批处理文件是一个例子,它启动了另一个程序(本例中是cmd.exe),向其发送了一条命令,然后发送了一个向上的箭头键,这将导致恢复最后执行的命令。这个批处理文件很简单,没有任何问题,所以你可以根据你的需要进行修改。

@if (@CodeSection == @Batch) @then

@echo off

rem Use %SendKeys% to send keys to the keyboard buffer
set SendKeys=CScript //nologo //E:JScript "%~F0"

rem Start the other program in the same Window
start "" /B cmd

%SendKeys% "echo off{ENTER}"

set /P "=Wait and send a command: " < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "echo Hello, world!{ENTER}"

set /P "=Wait and send an Up Arrow key: [" < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "{UP}"

set /P "=] Wait and send an Enter key:" < NUL
ping -n 5 -w 1 127.0.0.1 > NUL
%SendKeys% "{ENTER}"

%SendKeys% "exit{ENTER}"

goto :EOF

@end

// JScript section

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

关于SendKeys的键名列表,请参见。 http://msdn.microsoft.com/en-us/library/8c6yea83(v=vs.84).aspx

比如说。

LEFT ARROW    {LEFT}
RIGHT ARROW   {RIGHT}

关于这一解决方案的进一步解释,请参见:https://stackoverflow.com/questions/16823068/gnuwin32-openssl-s-client-conn-to-websphere-mq-server-not-closing-at-eof-hangs/16868982#16868982

评论(6)

为了清楚起见,你想从批处理文件中启动一个程序,然后让批处理文件在启动的程序中按下键(在你的例子中是方向键)?

如果是这样的话,你就不能用简单的".bat"文件来实现,因为启动的程序会阻止批处理文件继续运行,直到它结束为止------。

我的第一个建议是,如果可能的话,使用像AutoHotkey或AutoIt这样的东西,因为它们都有活跃的论坛,在那里你可以找到无数的启动应用程序和发送按键的例子,更不用说简单记录你想做的事情的工具了。然而,你说这是一台工作用电脑,你可能无法加载第三方程序,但你并非没有选择。

你可以使用Windows脚本主机,从类似于.vbs文件的东西来启动一个程序并向该进程发送密钥。如果你运行的是包含PowerShell 2.0的Windows版本(带Service Pack 3的Windows XP、带Service Pack 1的Windows Vista、Windows 7等),你可以将Windows Scripting Host作为PS脚本中的COM对象,或者使用VB的Intereact类。

如何做的具体细节不在本答案的范围内,但你可以通过在SO或Google上搜索,找到许多使用我刚才描述的方法的例子。

编辑:为了帮助你入门,你可以看看这里。

1.用Windows Script Host'的SendKeys方法实现任务自动化 。 2.关于SendKeys的一个有用的主题

评论(0)