我试图编写一个将屏幕更改为全屏模式的代码。问题是我在dosbox(windows)中运行编程所以我必须让dosbox完全屏蔽。我做了一项研究,我发现通过按ALT+ENTER
dosbox变为全屏。问题在于我不希望用户更改为全屏,我希望程序本身可以执行此操作。
经过另一项研究后,我找到了int 16h, 05h
。我已将Cl
设置为ENTER
按钮(0Dh
)的ASCII值。然后,我在CH
中设置了ALT
(38h
)的扫描代码。然后我测试了它,但它没有变成全屏。我做了一项检查以确保ALT
的扫描代码正常工作,方法是将CL
更改为另一个字符并且它有效,因此不是问题所在。然后我尝试将CH
更改为ALT+ENTER
(0Ah
),但仍然无效。
我认为问题是int 16h, 05
发送扫描代码和ASCII字符,我尝试将ASCII字符作为其按钮引用。
有没有办法同时按下2个扫描码? (或者让ALT
停下来,然后使用int 16h,05h
按下ENTER
键?)
谢谢!
答案 0 :(得分:2)
然后我在CH中设置ALT(38h)的扫描码。 ...我做了一个检查以确保ALT的扫描代码正常工作,通过将CL更改为另一个char并且它有效,所以这不是问题。
模拟按键的BIOS功能永远不会像您想象的那样处理ALT。 ALT只是一个特殊的密钥,可以对其他密钥的ASCII和SCAN代码进行微调,它在编码的任何部分都不会自动显示。将CH
设置为38h将无效。
将DOSBOX窗口全屏显示为 Windows 操作。您只能从Windows编程代码执行此操作。您无法在DOSBOX模拟器中运行的DOS程序中执行此操作。
关于模拟ALT-ENTER的想法 在Windows 3.1过去的好时光中,您有一个PIF配置文件,允许您指定某些组合键将由Windows或Windows中运行的DOS程序处理。通过正确的选择,您的DOS程序可以接收ALT-ENTER键。
也许在这一点上你可以尝试执行一个真正的Windows程序来最大化DOS程序的窗口。