繁体   English   中英

传统16位应用程序的Kiosk模式

[英]Kiosk mode for legacy 16bit app

我需要以编程方式最小化和最大化全屏16位应用程序。 不幸的是DosBox不是一个选项,因为这个应用程序与DosBox不支持的一些外围设备进行对话。

我能够编写可以设置焦点的代码(在Win32 API上很重),发送alt + enter键并最小化/最大化。

一切都会工作,但是,有些用户已经发现Alt + Enter可以退出全屏并开始滥用它。

我可以使用PIF中的设置禁用Alt + Enter,但这会破坏我以编程方式发送这些密钥的方法。

有没有更好的替代方案让NTVDM以编程方式切换全屏而不是发送Alt + Enter?

我使用Spy ++并发现实现全屏NTVDM正在将系统分辨率更改为640 x 480。

我试图调用ChangeDisplaySettings API来根据需要切换分辨率,但是当我设置640 x 480 NTVDM仍然作为窗口应用程序运行时。

我正在考虑设置一个低级键盘钩(http://msdn.microsoft.com/en-us/library/ms644985(v=vs.85).aspx)来过滤Alt + Enter。 我可以在我的应用程序发送它的短暂时刻禁用挂钩。 这听起来像一个危险的黑客,可能会产生很多副作用。 我也不确定它是否会起作用,因为NTVDM似乎没有使用消息循环来处理键盘输入。 SendMessage API不会产生结果,并且必须使用keybd_event API发送Alt + Enter。 有什么想法吗?

如何采用不同的方法 - 不要试图阻止它。 相反,跟踪窗口(比如10x秒),如果它不是全屏并且你在最后几秒内没有发送Alt-Enter,请发送一个。

如果有人按下Alt-Enter,它会进入一个窗口并立即返回全屏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM