C\#Winform 키보드 차단 win 과 alt+F4 구현 코드

이 때 사용자 가 키보드 alt+F4 를 통 해 프로그램 을 종료 하고 Win 의 조합 키 를 통 해 창 을 조작 하지 않 기 를 바 랍 니 다.나 는 인터넷 에서 검색 해 보 았 는데,전역 키보드 갈고리 의 방법 으로 사용자 가 키보드 에 대한 조작 을 차단 할 수 있 었 다.다음은 관련 코드 입 니 다.Form1 을 사 용 했 습 니 다.load 이벤트 와 Form1FormClosing 이벤트:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
namespace WindowsApplication10
{
public partial class Form1 : Form
{
//
[DllImport("user32.dll")]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
//
[DllImport("user32.dll")]
public static extern bool UnhookWindowsHookEx(int idHook);
//
[DllImport("user32.dll")]
public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
//
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
static int hKeyboardHook = 0;
HookProc KeyboardHookProcedure;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
HookStart();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
HookStop();
}
//
public void HookStart()
{
if (hKeyboardHook == 0)
{
// HookProc
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
//
hKeyboardHook = SetWindowsHookEx(13, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
if (hKeyboardHook == 0)
{
HookStop();
throw new Exception("SetWindowsHookEx failed.");
}
}
}
// 。
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
//
return 1;
}
//
public void HookStop()
{
bool retKeyboard = true;
if (hKeyboardHook != 0)
{
retKeyboard = UnhookWindowsHookEx(hKeyboardHook);
hKeyboardHook = 0;
}
if (!(retKeyboard)) throw new Exception("UnhookWindowsHookEx failed.");
}
}
}
(비고:이 방법 은 win 과 alt+F4 를 차단 할 수 있 으 나 ctrl+alt+del 을 차단 할 수 없습니다)

좋은 웹페이지 즐겨찾기