WinFrom中如何屏蔽各种热键 我要做一个考试系统,想打开软件后全屏,屏蔽任何可以切换出去的可能要如何做呢?都有什么可能呢?因为是考试软件不能屏蔽输入法的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把Control、Alt和Win键一屏蔽几乎就没问题了 [System.Runtime.InteropServices.DllImport("user32.dll")] static extern bool SetForegroundWindow(IntPtr hWnd); private void Form1_Load(object sender, EventArgs e) { this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.ShowInTaskbar = false; this.TopMost = true; this.timer1.Interval = 1; this.timer1.Enabled = true; this.WindowState = FormWindowState.Maximized; } private void timer1_Tick(object sender, EventArgs e) { SetForegroundWindow(this.Handle); } 设置窗体在前面[DllImport("User32.dll ", EntryPoint = "SetParent")]private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);[DllImport("user32.dll ", EntryPoint = "ShowWindow")]public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); private void button1_Click(object sender, EventArgs e){ Process p = new Process(); p.StartInfo.FileName = "cmd.exe "; p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; p.Start(); System.Threading.Thread.Sleep(100); SetParent(p.MainWindowHandle, this.Handle); ShowWindow(p.MainWindowHandle, 3);}int WINDOW_HANDLER = FindWindow(null, @"Form1"); //设为系统前台窗体并激活SetForegroundWindow((System.IntPtr)WINDOW_HANDLER); 直接贴代码,我以前用过 #region 钩子程序 //委托 //public delegate int HookProc(int nCode, int wParam, IntPtr lParam); //static int hHook = 0; //public const int WH_KEYBOARD_LL = 13; //LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,Acrobat Reader会在你截取之前获得键盘。 //HookProc KeyBoardHookProcedure; //键盘Hook结构函数 //[StructLayout(LayoutKind.Sequential)] //public class KeyBoardHookStruct //{ // public int vkCode; // public int scanCode; // public int flags; // public int time; // public int dwExtraInfo; //} //设置钩子 //[DllImport("user32.dll")] //public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); //[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] //抽掉钩子 //public static extern bool UnhookWindowsHookEx(int idHook); //[DllImport("user32.dll")] //调用下一个钩子 //public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); //[DllImport("kernel32.dll")] //public static extern int GetCurrentThreadId(); //[DllImport("kernel32.dll")] //public static extern IntPtr GetModuleHandle(string name); #endregion #region //public void Hook_Start() //{ // // 安装键盘钩子 // if (hHook == 0) // { // KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); // //hHook = SetWindowsHookEx(2, // // KeyBoardHookProcedure, // // GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), GetCurrentThreadId()); // hHook = SetWindowsHookEx(WH_KEYBOARD_LL, // KeyBoardHookProcedure, // GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); // //如果设置钩子失败. // if (hHook == 0) // { // Hook_Clear(); // //throw new Exception("设置Hook失败!"); // } // } //} //取消钩子事件 //public void Hook_Clear() //{ // bool retKeyboard = true; // if (hHook != 0) // { // retKeyboard = UnhookWindowsHookEx(hHook); // hHook = 0; // } // //如果去掉钩子失败. // if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed."); //} //这里可以添加自己想要的信息处理 //public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) //{ // if (nCode >= 0) // { // KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); // if (kbh.vkCode == 91) // 截获左win(开始菜单键) // { // return 1; // } // if (kbh.vkCode == 92)// 截获右win // { // return 1; // } // if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc // { // return 1; // } // if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+f4 // { // return 1; // } // if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) //截获Ctrl+Alt+Delete // { // return 1; // } // if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab // { // return 1; // } // } // return CallNextHookEx(hHook, nCode, wParam, lParam); //} #endregion 子类的静态常量 关于oracle中clob类型的字段 这种效果如何实现噶 在运行时,tablelayoutpanel怎样能手动调整列宽 谈谈c#网络编程 为什么必须安装Oracle客户端呢? 图片放大边缘 如何知道listview 处于编辑态?如果让listview离开编辑态?在线等! 我在学习ASP.NET 2.0, 要用C#编写其程序代码, 我的问题是: 不需要Main()函数了吗? vs code中的Nuget求助 vs2008 开发环境 编写代码时没有自动检查错误提示?? 急急急急急急 关于存储过程的调用
static extern bool SetForegroundWindow(IntPtr hWnd); private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.ShowInTaskbar = false;
this.TopMost = true;
this.timer1.Interval = 1;
this.timer1.Enabled = true;
this.WindowState = FormWindowState.Maximized;
} private void timer1_Tick(object sender, EventArgs e)
{
SetForegroundWindow(this.Handle);
}
[DllImport("User32.dll ", EntryPoint = "SetParent")]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll ", EntryPoint = "ShowWindow")]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe ";
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; p.Start();
System.Threading.Thread.Sleep(100);
SetParent(p.MainWindowHandle, this.Handle);
ShowWindow(p.MainWindowHandle, 3);}int WINDOW_HANDLER = FindWindow(null, @"Form1");
//设为系统前台窗体并激活
SetForegroundWindow((System.IntPtr)WINDOW_HANDLER);
#region 钩子程序
//委托
//public delegate int HookProc(int nCode, int wParam, IntPtr lParam);
//static int hHook = 0;
//public const int WH_KEYBOARD_LL = 13; //LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,Acrobat Reader会在你截取之前获得键盘。
//HookProc KeyBoardHookProcedure; //键盘Hook结构函数
//[StructLayout(LayoutKind.Sequential)]
//public class KeyBoardHookStruct
//{
// public int vkCode;
// public int scanCode;
// public int flags;
// public int time;
// public int dwExtraInfo;
//} //设置钩子
//[DllImport("user32.dll")]
//public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
//[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
//抽掉钩子
//public static extern bool UnhookWindowsHookEx(int idHook);
//[DllImport("user32.dll")]
//调用下一个钩子
//public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); //[DllImport("kernel32.dll")]
//public static extern int GetCurrentThreadId(); //[DllImport("kernel32.dll")]
//public static extern IntPtr GetModuleHandle(string name);
#endregion #region
//public void Hook_Start()
//{
// // 安装键盘钩子
// if (hHook == 0)
// {
// KeyBoardHookProcedure = new HookProc(KeyBoardHookProc); // //hHook = SetWindowsHookEx(2,
// // KeyBoardHookProcedure,
// // GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), GetCurrentThreadId()); // hHook = SetWindowsHookEx(WH_KEYBOARD_LL,
// KeyBoardHookProcedure,
// GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); // //如果设置钩子失败.
// if (hHook == 0)
// {
// Hook_Clear();
// //throw new Exception("设置Hook失败!");
// }
// }
//} //取消钩子事件
//public void Hook_Clear()
//{
// bool retKeyboard = true;
// if (hHook != 0)
// {
// retKeyboard = UnhookWindowsHookEx(hHook);
// hHook = 0;
// }
// //如果去掉钩子失败.
// if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed.");
//} //这里可以添加自己想要的信息处理 //public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
//{
// if (nCode >= 0)
// {
// KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
// if (kbh.vkCode == 91) // 截获左win(开始菜单键)
// {
// return 1;
// }
// if (kbh.vkCode == 92)// 截获右win
// {
// return 1;
// }
// if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc
// {
// return 1;
// }
// if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+f4
// {
// return 1;
// } // if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete) //截获Ctrl+Alt+Delete
// {
// return 1;
// }
// if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab
// {
// return 1;
// } // }
// return CallNextHookEx(hHook, nCode, wParam, lParam);
//}
#endregion