问题:从一段 C# 代码调用要按下的键盘键,但这里有一个问题:按键不应仅限于进程/应用程序,而是由整个操作系统接收,当程序在背景和不同的形式/程序有重点
目标:制作一个锁定和的状态的CapsLock程序NumLock
背景:我有一台笔记本电脑,这两个键让我非常沮丧,我想制作一个在后台运行的应用程序,CapsLock一旦意外启用就会禁用,并且NumLock永远不会被禁用,我想要为了扩展我对编码的了解,我试图找到解决方案,但没有一个能解决(整个)问题。
问题:从一段 C# 代码调用要按下的键盘键,但这里有一个问题:按键不应仅限于进程/应用程序,而是由整个操作系统接收,当程序在背景和不同的形式/程序有重点
目标:制作一个锁定和的状态的CapsLock程序NumLock
背景:我有一台笔记本电脑,这两个键让我非常沮丧,我想制作一个在后台运行的应用程序,CapsLock一旦意外启用就会禁用,并且NumLock永远不会被禁用,我想要为了扩展我对编码的了解,我试图找到解决方案,但没有一个能解决(整个)问题。
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");
}
}
}
您必须使用 user32.dll 连接键盘。此 codeProject示例应该可以帮助您入门
如果您想完全禁用大写锁定,您可以使用
SetWindowsHookEx
这里有很多关于如何使用它的信息。例如
当然还有msdn
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx
您可以尝试模拟键盘和鼠标点击的 CodePlex 项目。
它被称为 Windows 输入模拟器,可以在这里找到