ユーザーが開いている間は別のアプリケーションを開いたりジャンプしたりできないアプリを開発したいと考えています。にあるはずですVisual Basic
。たとえば、アプリケーションが開いている (実行中) ときに、ユーザーが「メディア プレーヤー」などの他の Windows アプリケーションを開こうとすると、開かないはずです。アプリは「タスクマネージャー」の実行さえ許可してはいけません。アプリケーションは、実行中に Windows 環境を完全にブロックする必要があります。
2 に答える
とても良い質問です。:)
VBでそれを達成することは可能ですか?
答えはイエスです!
簡単ですか?
絶対にありません!
ただし、問題に取り組む方法に関するヒントをいくつか紹介します。
1)タスクマネージャーを無効にする
Sub DisableTaskManager()
Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /f", vbNormalFocus
End Sub
Sub EnableTaskManager()
Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 0 /f", vbNormalFocus
End Sub
2)プログラムが常に最上位にあることを確認します
a)タスクバーを非表示にする
Option Explicit
'~~> http://allapi.mentalis.org/apilist/FindWindow.shtml
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName _
As String) As Long
'~~> http://allapi.mentalis.org/apilist/SetWindowPos.shtml
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_SHOWWINDOW = &H40
'~~> Show/Hide Taskbar
Sub Sample()
'~~> To show the taskbar
ShowTskBar True
'~~> To hide the taskbar
ShowTskBar False
End Sub
Sub ShowTskBar(ShouldI As Boolean)
Dim Sid As Long
Sid = FindWindow("Shell_traywnd", "")
If ShouldI = True Then
If Sid > 0 Then _
Sid = SetWindowPos(Sid, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
Else
If Sid > 0 Then _
Sid = SetWindowPos(Sid, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End If
End Sub
b)アプリケーションを常に一番上に表示する
'~~> http://www.allapi.net/apilist/SetWindowPos.shtml
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Sub Form_Activate()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
b)アプリケーションを最大化モードで表示します
フォームを最大化して、デスクトップにキオスクアプリケーションで表示されるフォームのみが表示されるようにします。必要に応じて、最小化ボタンまたはタイトルバーを無効にすることもできます。このような場合、ユーザーがボタンをクリックしてフォームを終了できるように、ボタンを追加することを忘れないでください。
3)スタートメニューを無効にする
このコードは、使用しているWindowsのバージョンによって異なります。グーグルで検索してください、あなたはたくさんの例を見つけるでしょう。
同様に、あなたはいくつかの小さな小さなことに気を配る必要がありますが、この投稿はあなたに良いスタートを与えるでしょう。あなたが一箇所で完全な解決策を探しているなら、私はあなたがそれを手に入れることは決してないだろう;)
HTH
独自の「サンドボックス」を作成するにはデスクトップ APIiを参照してください。
もう少し詳しい情報については、この質問も参照してください。