9

我需要创建一个简单的 Delphi 应用程序,kiosk 样式。

这是一件非常简单的事情,用户在其中写入一些个人信息以注册事件的单一表单。4 个 TEdit 和一个 TButton。

我想要实现的是避免用户执行任何与输入 TEdit 或单击 TButton 不同的操作。例如,我不希望他执行 ALT TAB(切换应用程序)、按键盘上的 windows 键、执行 ctrl-alt-canc 等...

我可以添加一个受密码保护的按钮来启用/禁用此“信息亭模式”,这样,当我需要退出信息亭模式时,我只需按下该按钮并退出。

如何在 Delphi 中实现这种“kiosk 模式”而无需手动拦截所有击键?或者是否有人已经开发了它以便可以共享?

4

3 回答 3

14

我认为您最好创建一个新桌面,然后在其中运行您的应用程序。当您的应用程序完成后,您可以恢复用户的桌面。这就是 Windows 登录屏幕的工作方式。当然,Windows 登录屏幕使用特殊的安全桌面。您在单独桌面中的应用程序将被隔离。您将拥有一个没有开始菜单、任务栏或桌面图标的桌面背景,因为 explorer.exe 不会在那里自动运行。当然 a 可以启动一个新进程,使用任务管理器,但 Windows 中的桌面是安全对象;因此,您可以根据需要进行限制。当然,如果您的应用程序有足够的权限。

要创建新桌面,可以使用CreateDesktop Windows API,要切换到新创建的桌面,可以使用 OpenDesktop 函数。

于 2010-07-13T13:02:46.233 回答
5

您可以尝试更改 Windows Shell。
当你启动 windows 时,你不执行默认的 shell (explorer.exe),你可以执行你的应用程序。

在互联网上,您可以找到默认窗口的替代 Shell(更具吸引力),例如:

此选项用于您正在开发的应用程序的类似目的。售货亭或 TPV。
要更改默认应用程序,您必须修改注册表项:

在 Win3.x 和 Win9x 中,SYSTEM.INI 文件:

[boot]
shell=MiAplicacion.exe

在 Win2k 和 WinXP 中,使用注册表:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
Shell=MiAplicacion.exe 

如果您测试此选项,请考虑将配置转换为原始值(按钮或选项)的模式。您必须重新启动以测试更改。

补充:另外,如果你在网上搜索一些类似的“Delphi Change default windows shell”,你可以找到更多的代码、示例和信息。

问候

PD:请原谅我的英语错误。

于 2010-07-13T11:01:13.653 回答
1

好吧,但是如果有人可以打开taskmgr,他可以创建一个新任务并从那里运行explorer.exe,所以它不是很安全……

好的 Taskmgr 可以通过策略停止......好吧,为了禁用 cad 序列,您可以使用 Remko Weijnen 创建的 saslibex,您可以在此处找到它:SASLibEx

最善良的退学,
s!

于 2010-07-13T11:14:05.947 回答