求C#屏蔽键盘的部分功能键的代码
如题,可以屏蔽 win、alt、tab等功能键,最好能指定屏蔽那些键盘。
[解决办法]
用code实现。。当点击事件的事件源不等于win、alt、tab的code值的时候。都可以运行。等于了。就不可以运行。。就可以了。狠简单。。。不知道我说的是不是你得要那种要求。
alt的值是18
tab的是9
win的我也不是很清楚。。。。你在看看。
[解决办法]
keypress事件 就像限制只能输入数字的
[解决办法]
public static WebProxy setWebPorxy(string Uri, int port, string uid, string pwd)
{
WebProxy myProxy = new WebProxy(Uri, port);
try
{
if (Uri.Length > 0)
{
myProxy.Credentials = new NetworkCredential(uid, pwd,"acc");
}
else
{
return null;
}
}
catch
{
return null;
}
return myProxy;
}
HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(text1);
request1.Proxy = setWebPorxy(。。。);
[解决办法]
#region 禁止除Ctrl+Alt+Del组合之外的所有输入,屏幕假死!
[DllImport("User32.dll")]
public static extern bool BlockInput(bool enabled); //为真是假死
#endregion
#region 运行本地屏保
private void RunScreenSaver()
{
String[] screenSavers = Directory.GetFiles(Environment.SystemDirectory, "*.scr");
if (screenSavers.Length > 0)
{// 启动获取到的第一个屏保
Process.Start(new ProcessStartInfo(screenSavers[0]));
}
}
#endregion
[解决办法]
http://topic.csdn.net/u/20090226/11/6a17fe3d-1986-4fb7-bc61-f7183af16f08.html
参考下
[解决办法]
发错了。
http://zhidao.baidu.com/question/100602440.html
[解决办法]
刚刚应该是另一个贴的,发错了不好意思。
[解决办法]
貌似要用到Hook
http://zhidao.baidu.com/question/100602440.html
[解决办法]
学习` UP
[解决办法]
可能要用到全局hook,有个推荐贴 关于屏幕取词的,可以参考下下
[解决办法]
Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ((e.KeyChar==))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
e.handled代表这次按键动作是否交由用户自己处理,如果为true代表由用户处理,系统不再过问,这里的应用是拦截,即通知系统我要处理这个数据,但又不出里,那么数据就废掉了,从而实现拦截的效果
[解决办法]
用键盘低级钩,要导出几个Win32的API才行
SetWindowsHookEx
CallNextHook
[解决办法]
顶,要用到全局钩子,系统方面的C++比较好强一点,,,,C#有点麻烦
[解决办法]
[解决办法]
调用win32api,拦截信息,重设虚拟键
[解决办法]
1. win,比较麻烦, 用hook, 或win32API都行
2. alt、tab用keyDown事件可以做到如
private void Register_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Alt)
{
e.Handled = true;
}
}
3. keyPress范围较小, 数据键, 字符键是可以的, 系统功能键就不行了
[解决办法]
up
[解决办法]
学习,有没有具体代码啊
[解决办法]
兄弟们,楼主说了,没有焦点的时候也要屏蔽,看清楚嘛....
hook的谁给个代码...
[解决办法]
通过API屏蔽
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd,
int id,
int fsModifiers,//alt = 1, none = 0, win = 8;
Keys virtualKey
);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd,
int id
);
protected override void WndProc(ref Message m)
{
const int WM_HOTKEY =0x0312;
switch (m.Msg)
{
case WM_HOTKEY:
ProcessHotkey();
break;
}
base.WndProc(ref m);
}
void ProcessHotkey()
{
}
参考
[解决办法]
收藏
[解决办法]
应该是全局HOOK吧
[解决办法]
顶
[解决办法]
DING
[解决办法]
键盘钩子,除此这外暂不知是否还有其它方法。
[解决办法]
我有这个钩子...要的话加我好友...我发给你!
[解决办法]
去百度搜啊!一搜就有,你以为只有CSDN有代码啊
[解决办法]
learn == up
[解决办法]
这个肯定适合:
http://www.vjsdn.com/bbs/html/090815_643.html
[解决办法]
刚看到最好的答案,vjsdn的班主真是好人啊!去看看吧。
http://www.vjsdn.com/bbs/bbsTopicDetails.aspx?pid=643
[解决办法]
这个...估计只有挂全局钩子.
[解决办法]
显然得用hook.
------解决方案--------------------
纯属路过了...................
[解决办法]
好东西。。。
[解决办法]
keypress事件 就像限制只能输入数字的
[解决办法]
使用键盘钩子,调用Win API 函数SetWindowHock。在Hock函数里进行处理。但是,无法勾住Ctrl+Alt+Del。因为他是底层实现的,必须使用键盘驱动才可以实现。
示例代码:
/*************************
//定义变量
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
static int hKeyboardHook = 0;
HookProc KeyboardHookProcedure;
/*************************
* 声明API函数
* ***********************/
// 安装钩子 (using System.Runtime.InteropServices;)
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]
public static extern int SetWindowsHookEx(int idHook,HookProc lpfn, IntPtr hInstance, int threadId);
// 卸载钩子
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]
public static extern bool UnhookWindowsHookEx(int idHook);
// 继续下一个钩子
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]
public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
// 取得当前线程编号(线程钩子需要用到)
[DllImport("kernel32.dll")]
static extern int GetCurrentThreadId();
//钩子子程:就是钩子所要做的事情
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
if (nCode >= 0)
{
/****************
//线程键盘钩子判断是否按下键
Keys keyData = (Keys)wParam;
if(lParam.ToInt32() > 0)
{
// 键盘按下
}
if(lParam.ToInt32() < 0)
{
// 键盘抬起
}
****************/
/****************
//全局键盘钩子判断是否按下键
wParam = = 0x100 // 键盘按下
wParam = = 0x101 // 键盘抬起
****************/
KeyMSG m = (KeyMSG) Marshal.PtrToStructure(lParam, typeof(KeyMSG));//键盘
// 在这里添加你想要做是事情(比如把键盘某些nCode忽略掉)
return 0;//如果返回1,则结束消息,这个消息到此为止,不再传递。如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者
}
return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
}
//键盘结构
public struct KeyMSG
{
public int vkCode; //键值
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
// 安装钩子
public void HookStart()
{
if(hKeyboardHook == 0)
{
// 创建HookProc实例
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
// 设置线程钩子
hKeyboardHook = SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);
//************************************
//键盘线程钩子
//SetWindowsHookEx( 2,KeyboardHookProcedure, IntPtr.Zero, GetCurrentThreadId()); //GetCurrentThreadId() 为要监视的线程ID,你完全可以自己写个方法获取QQ的线程哦
//键盘全局钩子,需要引用空间(using System.Reflection;)
//SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);
//
//关于SetWindowsHookEx (int idHook, HookProc lpfn, IntPtr hInstance, int threadId)函数将钩子加入到钩子链表中,说明一下四个参数:
//idHook 钩子类型,即确定钩子监听何种消息,上面的代码中设为2,即监听键盘消息并且是线程钩子,如果是全局钩子监听键盘消息应设为13,
//线程钩子监听鼠标消息设为7,全局钩子监听鼠标消息设为14。
//
//lpfn 钩子子程的地址指针。如果dwThreadId参数为0 或是一个由别的进程创建的线程的标识,lpfn必须指向DLL中的钩子子程。 除此以外,lpfn可
//以指向当前进程的一段钩子子程代码。钩子函数的入口地址,当钩子钩到任何消息后便调用这个函数。
//
//hInstance应用程序实例的句柄。标识包含lpfn所指的子程的DLL。如果threadId 标识当前进程创建的一个线程,而且子程代码位于当前
//进程,hInstance必须为NULL。可以很简单的设定其为本应用程序的实例句柄。
//
//threadedId 与安装的钩子子程相关联的线程的标识符。如果为0,钩子子程与所有的线程关联,即为全局钩子。
//************************************
// 如果设置钩子失败
if(hKeyboardHook == 0 )
{
HookStop();
throw new Exception("SetWindowsHookEx failed.");
}
}
}
// 卸载钩子
public void HookStop()
{
bool retKeyboard = true;
if(hKeyboardHook != 0)
{
retKeyboard = UnhookWindowsHookEx(hKeyboardHook);
hKeyboardHook = 0;
}
if (!( retKeyboard))
throw new Exception("UnhookWindowsHookEx failed.");
}
//*****************************