是否有一个程序可以将其输入到命令行或终端中,并带有一组参数来运行 16 位程序?例如:“run16bitprogram.exe 'path/to/program/test.exe'”,然后只在控制台中输出程序执行的任何操作。
如果有这样的程序,我希望它们能够跨平台。
下面是从 Java 执行的 dosbox 的示例图像:
这是配置文件:
以下是来自 java 的代码(ProcessBuilder 甚至没有打开 DOSBox):
Runtime.getRuntime().exec(new String[] { "C:/Program Files (x86)/DOSBox-0.74/DOSBox", "-conf \"C:/Users/Braden Steffaniak/Documents/GitHub/Workspace/ArrowIDE/res/assembly/new.conf\"", "-noconsole" });
-noconsole 命令有效,但如果我添加任何 -c 参数,它不会执行任何操作。
如果我在命令提示符中输入命令,它就会按我预期的方式工作。
答案1
在 Windows 上绝对是不可能的,请参阅以下 MSDN 文章:http://support.microsoft.com/kb/896458
任何允许您在 64 位 Windows 系统上运行 16 位程序的工具都必须模拟系统,这就是 DOSbox 所做的。
以下工作:
public class DosBoxCaller {
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder(
"C:\\Program Files\\DOSBox-0.74\\DOSBox.exe",
"-conf C:\\Users\\Y\\dosbox.conf");
pb.directory(new File("C:\\Users\\Y"));
pb.redirectErrorStream(true);
try {
Process p = pb.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果这没有为您调用 DOSBox,那么您可能路径错误,只是忽略了抛出的异常。另外,请仔细检查您的 conf 选项是否有效,并使用完整 dosbox 配置的修改副本(位于您的用户文件夹\Application Data\Local\DosBox 中,将其复制到您最喜欢的文件夹,然后编辑 autoexec)。
答案2
有一个模拟器可以在 Windows x64 中运行简单的命令行 DOS 程序。它被称为“适用于 Win32-x64 的 MS-DOS 播放器”。它提供了源代码,因此理论上您可以实现缺少的功能。