3

Java [Swing]でコンピューター適応型テストを構築していて、テストが終了するまで(またはユーザーが終了するまで)バックグラウンドで他のプログラムの実行を無効にしたい。これは、試験を受ける候補者が試験で不正行為をするのを防ぐためです。

私の質問は、それについてどうやって行くのかということです。新しいタスクの作成を停止したり、ユーザーが他のプログラムと対話できないようにするにはどうすればよいですか?

この質問をする前の私の宿題は次のとおりです。1。JNIを使​​用して、WindowsでSetForegroundWindow(HWND)関数を呼び出すことができました。Linuxでの同等のものは何ですか?

  1. グローバルLOWLEVELKEYBOARDHOOK 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では、別のデスクトップセッションを利用できます(WindowsVistaおよび7UACプロンプトがデフォルトで使用するのと同じものです)。

これにより、(ユーザーにとって)デスクトップの残りの部分と対話する方法なしでプロセスを実行できますが、終了する前に必ず元に戻すように注意してください。そうしないと、スタックしてしまいます。

于 2012-09-19T08:11:21.960 に答える
0

ええと、私はこれに対する回避策を見つけたと思います:(私はもっと簡単な方法でそれについて考えるべきでした)。

WindowFocusListenerをフレームに実装できます。人が不正行為をした場合、ALARMがオフになり、モニターに警告します。

みんなありがとう。:-)

于 2012-09-19T08:54:21.113 に答える