3

我正在用 Java [Swing] 构建计算机自适应测试,并希望在测试完成(或用户退出)之前禁用在后台运行其他程序。这是为了防止考生在考试中作弊。

我的问题是,如何去做?如何停止创建新任务或阻止用户与其他程序交互?

在问这个问题之前我的功课是: 1. 我可以使用 JNI 并在 windows 上调用 SetForegroundWindow(HWND) 函数。它在 Linux 中的等价物是什么?

  1. 使用带有全局 LOWLEVEL KEYBOARD HOOK PROC 的 SetWindowsHookEx() 函数完全禁用键盘。Linux中的等价物?

如果之前已经回答过这个问题,我们深表歉意——

4

4 回答 4

1

如何停止创建新任务或阻止用户与其他程序交互

操作系统不应允许上述语句,我认为您应该优雅地警告用户不要开始新任务并与现有任务交互。

但是,如果您坚持,您应该考虑编写一些代码,就像受密码保护的屏幕保护程序一样,当然不要求输入密码。

于 2012-09-18T18:47:45.363 回答
1

虽然我不知道如何阻止某人改变焦点,但您可以跟踪焦点,并检测您的 GUI 何时失去焦点。您甚至可以进行一些计时测量,例如 5 秒可以,但 30 秒不行。

于 2012-09-18T18:47:47.080 回答
1

在 Windows 上,您可以使用另一个桌面会话(与 Windows Vista 和 7 UAC 提示符默认使用的相同)。

这使您可以在无法(对于用户)与桌面的其余部分进行交互的情况下运行您的进程,但要非常小心,确保在退出之前切换回来,否则它们将被卡住。

于 2012-09-19T08:11:21.960 回答
0

嗯,我想我找到了解决方法:(我应该以更简单的方式考虑它)。

我可以在我的框架中实现 WindowFocusListener,如果有人作弊,警报就会响起并提醒监视器。

谢谢大家。:-)

于 2012-09-19T08:54:21.113 回答