问题: 从一段C#代码中调用要按下的键盘键 但这里有一个问题:按键不应局限于流程/应用程序 但是整个操作系统都收到了,当程序在后台并且不同的表单/程序有焦点时也是如此
目标: 制作一个锁定 CapsLock 和 NumLock
状态的程序背景: 我有一台笔记本电脑,这两个键让我很沮丧,我想创建一个在后台运行的应用程序,并且一旦意外启用就禁用 CapsLock ,并且 NumLock 永远不会被禁用,我也想扩展我对编码的了解,我试图找到解决方案,但没有一个能解决(整个)问题。
答案 0 :(得分:1)
using System;
using System.Runtime.InteropServices;
public class CapsLockControl
{
public const byte VK_NUMLOCK = 0x90;
public const byte VK_CAPSLOCK = 0x14;
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,UIntPtr dwExtraInfo);
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
public static void Main()
{
if (Control.IsKeyLocked(Keys.CapsLock))
{
Console.WriteLine("Caps Lock key is ON. We'll turn it off");
keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0);
keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
(UIntPtr) 0);
}
else
{
Console.WriteLine("Caps Lock key is OFF");
}
}
}
答案 1 :(得分:0)
您必须使用user32.dll挂钩键盘。 这个codeProject sample应该让你入门
答案 2 :(得分:0)
如果你想要实际被按下禁用大写锁定,你可以用
来完成SetWindowsHookEx
这里有很多关于如何使用它的信息。例如
Global keyboard hook that doesn't disable user input outside of form
and ofcourse msdn
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx
答案 3 :(得分:0)
您可以尝试模拟键盘和鼠标点击的CodePlex项目。
它被称为Windows输入模拟器,可以找到它Here