您需要在Kiosk模式下运行应用程序.
外部方法
[DllImport("user32.dll")] private static extern int FindWindow(string cls,string wndwText); [DllImport("user32.dll")] private static extern int ShowWindow(int hwnd,int cmd); [DllImport("user32.dll")] private static extern long SHAppBarMessage(long dword,int cmd); [DllImport("user32.dll")] private static extern int RegisterHotKey(IntPtr hwnd,int id,int fsModifiers,int vk); [DllImport("user32.dll")] private static extern int UnregisterHotKey(IntPtr hwnd,int id);
常量
//constants for modifier keys private const int USE_ALT = 1; private const int USE_CTRL = 2; private const int USE_SHIFT = 4; private const int USE_WIN = 8; //hot key ID tracker short mHotKeyId = 0;
private void RegisterGlobalHotKey(Keys hotkey,int modifiers) { try { // increment the hot key value - we are just identifying // them with a sequential number since we have multiples mHotKeyId++; if (mHotKeyId > 0) { // register the hot key combination if (RegisterHotKey(this.Handle,mHotKeyId,modifiers,Convert.ToInt16(hotkey)) == 0) { // tell the user which combination Failed to register - // this is useful to you,not an end user; the end user // should never see this application run MessageBox.Show("Error: " + mHotKeyId.ToString() + " - " + Marshal.GetLastWin32Error().ToString(),"Hot Key Registration"); } } } catch { // clean up if hotkey registration Failed - // nothing works if it fails UnregisterGlobalHotKey(); } } private void UnregisterGlobalHotKey() { // loop through each hotkey id and // disable it for (int i = 0; i < mHotKeyId; i++) { UnregisterHotKey(this.Handle,i); } } protected override void WndProc(ref Message m) { base.WndProc(ref m); // if the message matches,// disregard it const int WM_HOTKEY = 0x312; if (m.Msg == WM_HOTKEY) { // Ignore the request or each // disabled hotkey combination } }
禁用热键
RegisterGlobalHotKey(Keys.F4,USE_ALT); // Disable CTRL+W - exit RegisterGlobalHotKey(Keys.W,USE_CTRL); // Disable CTRL+N - new window RegisterGlobalHotKey(Keys.N,USE_CTRL); // Disable CTRL+S - save RegisterGlobalHotKey(Keys.S,USE_CTRL); // Disable CTRL+A - select all RegisterGlobalHotKey(Keys.A,USE_CTRL); // Disable CTRL+C - copy RegisterGlobalHotKey(Keys.C,USE_CTRL); // Disable CTRL+X - cut RegisterGlobalHotKey(Keys.X,USE_CTRL); // Disable CTRL+V - paste RegisterGlobalHotKey(Keys.V,USE_CTRL); // Disable CTRL+B - organize favorites RegisterGlobalHotKey(Keys.B,USE_CTRL); // Disable CTRL+F - find RegisterGlobalHotKey(Keys.F,USE_CTRL); // Disable CTRL+H - view history RegisterGlobalHotKey(Keys.H,USE_CTRL); // Disable ALT+Tab - tab through open applications RegisterGlobalHotKey(Keys.Tab,USE_ALT);
隐藏任务栏
// hide the task bar - not a big deal,they can // still CTRL+ESC to get the start menu; for that // matter,CTRL+ALT+DEL also works; if you need to // disable that you will have to violate SAS and // monkey with the security policies on the machine ShowWindow(FindWindow("Shell_TrayWnd",null),0);
信息亭模式中的示例形式
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; public partial class frmKioskStarter : Form { #region Dynamic Link Library Imports [DllImport("user32.dll")] private static extern int FindWindow(string cls,string wndwText); [DllImport("user32.dll")] private static extern int ShowWindow(int hwnd,int cmd); [DllImport("user32.dll")] private static extern long SHAppBarMessage(long dword,int cmd); [DllImport("user32.dll")] private static extern int RegisterHotKey(IntPtr hwnd,int vk); [DllImport("user32.dll")] private static extern int UnregisterHotKey(IntPtr hwnd,int id); #endregion #region Modifier Constants and Variables // Constants for modifier keys private const int USE_ALT = 1; private const int USE_CTRL = 2; private const int USE_SHIFT = 4; private const int USE_WIN = 8; // Hot key ID tracker short mHotKeyId = 0; #endregion public frmKioskStarter() { InitializeComponent(); // Browser window key combinations // -- Some things that you may want to disable -- //CTRL+A Select All //CTRL+B Organize Favorites //CTRL+C Copy //CTRL+F Find //CTRL+H View History //CTRL+L Open Locate //CTRL+N New window (not in Kiosk mode) //CTRL+O Open Locate //CTRL+P Print //CTRL+R Refresh //CTRL+S Save //CTRL+V Paste //CTRL+W Close //CTRL+X Cut //ALT+F4 Close // Use CTRL+ALT+DEL to open the task manager,// kill IE and then close the application window // to exit // Disable ALT+F4 - exit RegisterGlobalHotKey(Keys.F4,USE_ALT); // Disable CTRL+W - exit RegisterGlobalHotKey(Keys.W,USE_CTRL); // Disable CTRL+N - new window RegisterGlobalHotKey(Keys.N,USE_CTRL); // Disable CTRL+S - save RegisterGlobalHotKey(Keys.S,USE_CTRL); // Disable CTRL+A - select all RegisterGlobalHotKey(Keys.A,USE_CTRL); // Disable CTRL+C - copy RegisterGlobalHotKey(Keys.C,USE_CTRL); // Disable CTRL+X - cut RegisterGlobalHotKey(Keys.X,USE_CTRL); // Disable CTRL+V - paste RegisterGlobalHotKey(Keys.V,USE_CTRL); // Disable CTRL+B - organize favorites RegisterGlobalHotKey(Keys.B,USE_CTRL); // Disable CTRL+F - find RegisterGlobalHotKey(Keys.F,USE_CTRL); // Disable CTRL+H - view history RegisterGlobalHotKey(Keys.H,USE_CTRL); // Disable ALT+Tab - tab through open applications RegisterGlobalHotKey(Keys.Tab,USE_ALT); // hide the task bar - not a big deal,they can // still CTRL+ESC to get the start menu; for that // matter,CTRL+ALT+DEL also works; if you need to // disable that you will have to violate SAS and // monkey with the security policies on the machine ShowWindow(FindWindow("Shell_TrayWnd",0); } /// <summary> /// Launch the browser window in kiosk mode /// using the URL keyed into the text Box /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender,EventArgs e) { System.Diagnostics.Process.Start("iexplore","-k " + txtUrl.Text); } private void RegisterGlobalHotKey(Keys hotkey,int modifiers) { try { // increment the hot key value - we are just identifying // them with a sequential number since we have multiples mHotKeyId++; if(mHotKeyId > 0) { // register the hot key combination if (RegisterHotKey(this.Handle,Convert.ToInt16(hotkey)) == 0) { // tell the user which combination Failed to register - // this is useful to you,not an end user; the end user // should never see this application run MessageBox.Show("Error: " + mHotKeyId.ToString() + " - " + Marshal.GetLastWin32Error().ToString(),"Hot Key Registration"); } } } catch { // clean up if hotkey registration Failed - // nothing works if it fails UnregisterGlobalHotKey(); } } private void UnregisterGlobalHotKey() { // loop through each hotkey id and // disable it for (int i = 0; i < mHotKeyId; i++) { UnregisterHotKey(this.Handle,i); } } protected override void WndProc(ref Message m) { base.WndProc(ref m); // if the message matches,// disregard it const int WM_HOTKEY = 0x312; if (m.Msg == WM_HOTKEY) { // Ignore the request or each // disabled hotkey combination } } private void Form1_FormClosed(object sender,FormClosedEventArgs e) { // unregister the hot keys UnregisterGlobalHotKey(); // show the taskbar - does not matter really ShowWindow(FindWindow("Shell_TrayWnd",1); } }
以下是您可以查看的文章:
http://www.c-sharpcorner.com/UploadFile/scottlysle/KioskCS01292008011606AM/KioskCS.aspx
这里有一些打包软件来研究:
http://www.kioware.com/productoverview.aspx?source=google&gclid=CPeQyrzz8qsCFZFV7Aod6noeMw