Chcę opracować aplikację, która nie pozwoli użytkownikowi otworzyć lub przejść do innej aplikacji, gdy jest otwarta. Powinien być w Visual Basic
. Na przykład, jeśli moja aplikacja jest otwarta (działa), a użytkownik próbuje otworzyć dowolną inną aplikację Windows, taką jak "odtwarzacz multimediów", to nie powinien się otwierać. Aplikacja nie powinna pozwalać na uruchamianie "menedżera zadań". Aplikacja powinna całkowicie zablokować środowisko Windows podczas pracy.Rozwiń aplikację, która nie traci ostrości?
Odpowiedz
Bardzo dobre pytanie. :)
Czy można to osiągnąć w VB?
Odpowiedź brzmi: Tak!
Czy to proste?
Zdecydowanie nie!
Oto kilka wskazówek, jak podejść do problemu.
1) Wyłącza Menedżera zadań
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) Upewnij się, że program jest zawsze na wierzchu
a) Ukrywanie paska zadań
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) pokaż aplikacja Zawsze na wierzchu
'~~> 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) przedstawiają swoją aplikację w trybie maksymalizować
Maksymalizacja formę tak, że na pulpicie pokazuje tylko swoją postać, jak to widać w aplikacji Kiosk . W zależności od potrzeby można również wyłączyć przycisk minimalizacji lub pasek tytułu. W takim przypadku należy pamiętać o dodaniu przycisku, aby użytkownik mógł kliknąć ten przycisk, aby zamknąć formularz.
3) Wyłączenie menu Start
Kod ten zależy od wersji systemu Windows, którego używasz. Wykonaj wyszukiwanie w Google, znajdziesz wiele przykładów.
Podobnie, trzeba dbać o kilka małych drobiazgów, ale ten post da dobry początek. Jeśli szukasz kompletnego rozwiązania w jednym miejscu ówczesnego Wątpię, czy kiedykolwiek się to;)
HTH
+1 za logiczne myślenie. –
+1 okropne rzeczy –
Dziękuję Pradeep/JFC :) –
Spójrz na Desktop APIi stworzyć swój własny „piaskownicy”, ale bardzo uważać, gdyż bardzo łatwo aby zablokować się na głównym pulpicie.
Zobacz też this question, aby uzyskać więcej informacji.
Cóż, powodzenia z tym –
Jeśli tworzysz aplikację Kiosk jak te znajdujące się w wielu sklepach elektronicznych, trzeba polegać na zasadach grupy w systemie Windows 7 ponad ograniczeń własnej aplikacji. Google, "Wyłącz Menedżera zadań w Windows 7" –
To było nazywane "Oknem modalnym systemu". Mówię "przyzwyczajeni do", ponieważ od Win32, Microsoft nie dostarczył w żaden sposób wbudowanego sposobu, i bardzo odradzają nawet próby zrobienia tego. (Choć czasami starają się to zrobić dla własnych produktów). – RBarryYoung