从java运行自动热键(ahk)脚本
有没有一种方法可以使用java中的参数运行脚本? 不是可执行文件,而是自动热键脚本 我尝试过这个,但由于它不是一个有效的可执行文件,所以无法工作 控制类:从java运行自动热键(ahk)脚本,java,windows,autohotkey,Java,Windows,Autohotkey,有没有一种方法可以使用java中的参数运行脚本? 不是可执行文件,而是自动热键脚本 我尝试过这个,但由于它不是一个有效的可执行文件,所以无法工作 控制类: package org.bsep.acp; import java.io.IOException; /** * This class allow you to send string to your * computer as keystrokes. * * escape car is ' * special char are
package org.bsep.acp;
import java.io.IOException;
/**
* This class allow you to send string to your
* computer as keystrokes.
*
* escape car is '
* special char are {space}, {Enter}, {F1}, {F2}, etc
*
* @author Eildosa
*/
public class StringSender {
Runtime runtime;
private final static String AHK_BRIDGE = "C:\\perso\\WorkspaceScripts\\skyrimTools\\src\\org\\bsep\\acp\\ahkBridge.ahk";
public StringSender() {
runtime = Runtime.getRuntime();
}
public void sendString(String data) throws IOException, InterruptedException {
runtime.exec(new String[] { AHK_BRIDGE, data} );
Thread.currentThread();
Thread.sleep(1000);
}
}
测试:
Runtime runtime = Runtime.getRuntime();
runtime.exec(NOTEPAD);
Thread.currentThread();
Thread.sleep(4000);
StringSender stringSender = new StringSender();
stringSender.sendString("Writing from java through AHK.");
例外情况:
Exception in thread "main" java.io.IOException: Cannot run program "C:\perso\WorkspaceScripts\skyrimTools\src\org\bsep\acp\ahkBridge.ahk": CreateProcess error=193, %1 n?est pas une application Win32 valid
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:485)
at org.bsep.acp.StringSender.sendString(StringSender.java:25)
at org.bsep.acp.VariousTests.ahkBridgeTester(VariousTests.java:23)
at org.bsep.acp.VariousTests.main(VariousTests.java:13)
Caused by: java.io.IOException: CreateProcess error=193, %1 n?est pas une application Win32 valid
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:376)
at java.lang.ProcessImpl.start(ProcessImpl.java:136)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 5 more
线程“main”java.io.IOException中的异常:无法运行程序“C:\perso\workspacesscripts\skyrimTools\src\org\bsep\acp\ahkBridge.ahk”:CreateProcess错误=193,%1 n?est pas une应用程序Win32有效
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
位于java.lang.Runtime.exec(Runtime.java:617)
位于java.lang.Runtime.exec(Runtime.java:485)
位于org.bsep.acp.StringSender.sendString(StringSender.java:25)
位于org.bsep.acp.VariousTests.ahkBridgeTester(VariousTests.java:23)
位于org.bsep.acp.VariousTests.main(VariousTests.java:13)
原因:java.io.IOException:CreateProcess错误=193,%1 n?est pas une应用程序Win32有效
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl。(ProcessImpl.java:376)
在java.lang.ProcessImpl.start(ProcessImpl.java:136)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 还有5个
翻译:这不是有效的win32应用程序
谢谢。你可以让另一个中间人加入进来(启动ahk的bat脚本)。可以通过exec启动,下面是关于启动bat的so帖子
首先尝试通过命令行调用ahk传递脚本,但我不确定这是否可行,值得一试。因为原始ahk脚本不可执行,您可以编译脚本并直接执行,或者将脚本路径作为参数传递给
AutoHotkey.exe
(通常位于C:\Program Files\AutoHotkey\
)中。关于第二个选项,您的代码可能如下所示:
public void sendString(String data) throws IOException, InterruptedException {
String ahkPath = "C:\\Program Files\\AutoHotkey\\AutoHotkey.exe";
String scriptPath = "C:\\Users\\MCL\\test.ahk";
runtime.exec(new String[] { ahkPath, scriptPath, data} );
Thread.currentThread();
Thread.sleep(1000);
}
AutoHooKy将将每个参数传递给脚本,从第二个开始(在这种情况下:<代码>数据< /代码>).< /p>什么是<代码> AkkJBase和<代码>数据< /代码>?请张贴足够数量的代码。@ Euldoa取决于您正在做什么,您也可以考虑结合<代码> AutoHooKix.DLL<代码>。