gpt4 book ai didi

c# - 遗留 16 位应用程序的 Kiosk 模式

转载 作者:行者123 更新时间:2023-11-30 17:17:56 30 4
gpt4 key购买 nike

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

我能够编写可以设置焦点、发送 alt + enter 键和最小化/最大化的代码(大量使用 Win32 API)。

一切正常,但是,一些用户发现 Alt + Enter 可以退出全屏并开始滥用它。

我可以使用 PIF 中的设置禁用 Alt + Enter,但这打破了我以编程方式发送这些键的方法。

是否有比发送 Alt + Enter 更好的替代方法让 NTVDM 以编程方式切换全屏?

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

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

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

最佳答案

换一种方法怎么样——不要试图阻止它。相反,请跟踪窗口(例如 10 秒),如果它不是全屏并且您在最后几秒内没有发送 Alt-Enter,请发送一个。

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

关于c# - 遗留 16 位应用程序的 Kiosk 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092787/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com