使用批处理文件按键盘键

Rup*_*esh 30 keyboard batch-file

我正在尝试开发一个批处理文件,它可以自动按下左箭头和右箭头键n次,中间有一些暂停.有人可以帮我这个吗?

PS:我尝试安装自动键盘软件,但是因为我在工作,我无法安装它们.我需要这个程序才能在办公室电脑上工作.

Aac*_*ini 46

哇!这意味着您必须学习不同的编程语言才能将两个键发送到键盘?有更简单的方法可以实现同样的目的.:-)

下面的批处理文件是启动另一个程序(在本例中为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));
Run Code Online (Sandbox Code Playgroud)

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

例如:

LEFT ARROW    {LEFT}
RIGHT ARROW   {RIGHT}
Run Code Online (Sandbox Code Playgroud)

有关此解决方案的进一步说明,请参阅:GnuWin32 openssl s_client conn到WebSphere MQ服务器未关闭EOF,挂起

  • 你能告诉我什么`设置SendKeys = CScript // nologo // E:JScript"%~F0"`是为了什么? (6认同)

Add*_*red 6

为了清楚起见,您想要从批处理文件中启动程序,然后在该启动的程序中按批处理文件按键(在您的示例中为箭头键)?

如果是这种情况,您将无法仅使用".bat"文件来执行此操作,因为启动将停止批处理文件继续直到它终止 -

我的第一个建议是尽可能使用像AutoHotkey或AutoIt这样的东西,因为他们都有活跃的论坛,你会发现无数的人们启动应用程序和发送按键的例子,更不用说简单地"记录"你想要的工具做.但是你说这是一台工作计算机,你可能无法加载第三方程序..但你并非没有选择.

您可以使用类似.vbs文件的Windows Scripting Host来启动程序并将密钥发送到该进程.如果您运行的Windows版本包括PowerShell 2.0(Windows XP Service Pack 3,带有Service Pack 1的Windows Vista,Windows 7等),则可以使用Windows脚本主机作为PS脚本中的COM对象或使用VB的Intereact类.

有关如何操作的具体内容超出了本答案的范围,但您可以通过在SO或Google上搜索我刚才描述的方法找到大量示例.

编辑:为了帮助您入门,您可以在这里查看:

  1. 使用Windows脚本宿主的SendKeys方法自动执行任务
  2. 关于SendKeys的一个有用的线程