无需 dosbox 即可在 64 位机器上运行 16 位程序

无需 dosbox 即可在 64 位机器上运行 16 位程序

是否有一个程序可以将其输入到命令行或终端中,并带有一组参数来运行 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 播放器”。它提供了源代码,因此理论上您可以实现缺少的功能。

http://takeda-toshiya.my.coocan.jp/msdos/index.html

相关内容