2012-04-22 6 views
10

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?

+2

Cóż, powodzenia z tym –

+2

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" –

+0

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

Odpowiedz

14

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

+0

+1 za logiczne myślenie. –

+0

+1 okropne rzeczy –

+0

Dziękuję Pradeep/JFC :) –

0

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.