2012-06-04 35 views
1

我們目前正在使用C#開發全屏應用程序。 這是一個將用於學校評估學生的測驗應用程序。C# - 應用程序全屏並阻止Windows本機鍵盤命令

我們目前可以將應用程序放到沒有頂欄和邊框的全屏狀態。問題是學生仍然可以在Windows之間切換並使用Windows本機命令,如CTRL-ALT-DELETE和CTRL-SHIFT-ESC。哦,ALT-TAB。

我們想知道是否有方法阻止這些命令沒有反病毒報告應用程序作爲威脅。那麼,首先如果有辦法簡單地阻止命令。我們相信,但你們通常會想出幾個難以解決的問題的驚人解決方案,所以我們認爲我們可能會問。

感謝您的關心,希望有人能拿出一些好東西。

編輯:

我們要做到這一點,使學生無法殺死任務管理器應用程序,並讓他們無法打開任何其他應用程式,例如互聯網瀏覽器或聊天工具。也許有更安全的方法來做事情?

+1

[通過C#禁用任務管理器](https://julianscorner.com/2009/02/25/disable-task-manager-via-c/)和[使用c sharp以編程方式禁用任務管理器](http:// stackoverflow.com/questions/2971097/programatically-disabling-taskmanager-using-c-sharp) – PresleyDias

+1

for'shotcuts'嘗試[阻止特定的鍵盤組合鍵](http://stackoverflow.com/questions/1170102/blocking-specific- [/處理全局鍵盤Hooks-in-C](http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks鍵盤組合鍵使用c-sharp) -in-C) – PresleyDias

+0

哇,那很快。那麼,應該這樣做,讓我先檢查一下是否可行。如果確實如此,請隨時發佈您的鏈接作爲答案,以便將其標記爲已接受的答案。只是爲了您的聲譽=) –

回答

1

你就不能設置形式TopMost屬性爲TRUE並隱藏所有表單控件。 所有的ctrl-alt-del等允許你做的就是關閉進程/應用程序。如果這是你試圖避免的,那麼忽略這個答案。

對方回答是使用全局鍵盤鉤子:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
    private static extern IntPtr SetWindowsHookEx(int idHook, 
     LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId); 

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    public static extern bool UnhookWindowsHookEx(IntPtr hhk); 

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
    private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, 
     IntPtr wParam, IntPtr lParam); 
1

爲什麼不建在asp.net您的應用程序在瀏覽器中運行,並通過組策略設置的計算機,進入「信息亭」模式?您可以以全屏方式運行IE。