我如何制作一个以程序为目标并在文本框中键入的 .bat
How to i make a .bat that targets a program and types in a text box
我不知道从哪里开始。我见过这样的答案,但我不知道如何根据我的需要格式化它们。我只需要在打开和关闭 minecraft 服务器时通过在控制台中键入 "stop" 来定位它。我没有要显示的代码,但这将在另一个文件中,因此我可以启动它,然后让它关闭程序。顺便说一句,我不认为我可以使用 taskkill
但任何东西都会有所帮助 ;) 非常感谢!
单独使用批处理文件是不可能的。获取系统中另一个程序的输入主要有两种方式(在本例中,java.exe):
- 让您的程序侦听特殊信号。 Minecraft 有几个管理插件,它们将在 Java 进程中 运行 并执行您需要的操作。
- 欺骗用户对程序的输入。对于控制台应用程序,您可能会使用基于 SendKeys() 的解决方案。有关示例,请参阅 How to send input to the console as if the user is typing。
就 Minecraft 而言,我认为第一个解决方案会简单得多,因为模组社区已经针对这个问题提供了许多解决方案。 @Frxstrem 推荐 mcrcon,我认为这是一个很好的解决方案。
如果不调用其他东西,批处理文件无法执行此操作;如果您要调用其他东西,请使用 AutoHotkey - 这就是它擅长的。
WinActivate "the title of the Minecraft server window"
https://www.autohotkey.com/docs/commands/WinActivate.htm
Send stop{Enter}
很可能您使用的控制台客户端是可编写脚本的,这不是一个好的方法。
这里有一个 sendKeys.bat。您可以像这样使用它:
call sendKeys.bat "Minecraft console title" "stop{enter}"
我不知道从哪里开始。我见过这样的答案,但我不知道如何根据我的需要格式化它们。我只需要在打开和关闭 minecraft 服务器时通过在控制台中键入 "stop" 来定位它。我没有要显示的代码,但这将在另一个文件中,因此我可以启动它,然后让它关闭程序。顺便说一句,我不认为我可以使用 taskkill
但任何东西都会有所帮助 ;) 非常感谢!
单独使用批处理文件是不可能的。获取系统中另一个程序的输入主要有两种方式(在本例中,java.exe):
- 让您的程序侦听特殊信号。 Minecraft 有几个管理插件,它们将在 Java 进程中 运行 并执行您需要的操作。
- 欺骗用户对程序的输入。对于控制台应用程序,您可能会使用基于 SendKeys() 的解决方案。有关示例,请参阅 How to send input to the console as if the user is typing。
就 Minecraft 而言,我认为第一个解决方案会简单得多,因为模组社区已经针对这个问题提供了许多解决方案。 @Frxstrem 推荐 mcrcon,我认为这是一个很好的解决方案。
如果不调用其他东西,批处理文件无法执行此操作;如果您要调用其他东西,请使用 AutoHotkey - 这就是它擅长的。
WinActivate "the title of the Minecraft server window"
https://www.autohotkey.com/docs/commands/WinActivate.htm
Send stop{Enter}
很可能您使用的控制台客户端是可编写脚本的,这不是一个好的方法。
这里有一个 sendKeys.bat。您可以像这样使用它:
call sendKeys.bat "Minecraft console title" "stop{enter}"