2013-02-20 86 views
2

我有下面的代码来改变应用程序启动时Caps Lock键的状态。Capslock ON&OFF with Application

我想在启动应用程序时将Caps Lock状态更改为ON(如果它已经打开,那么它应该保持打开状态)。当应用程序关闭时,Caps Lock状态应该变为OFF。有关如何实现这一目标的任何建议?

namespace WindowsFormsApplication2 
{ 

    public partial class Form1 : Form 
    { 
     [DllImport("user32.dll")] 
     static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, 
     UIntPtr dwExtraInfo); 



     public Form1() 
     { 
      InitializeComponent(); 

      const int KEYEVENTF_EXTENDEDKEY = 0x1; 
      const int KEYEVENTF_KEYUP = 0x2; 
      keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0); 
      keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 
      (UIntPtr)1); 
} 
+10

我得到这种感觉真的会让你的用户烦恼。 – SecurityMatt 2013-02-20 18:38:08

+0

我不明白你的问题是什么。 (另外,我不认为你可以在一个函数中声明一个const) – JDB 2013-02-20 19:25:32

回答

1

看看这个帖子的API,用于发现瓶盖是否锁定为开: -

How can I find the state of NumLock, CapsLock and ScrollLock in .net?

发表评论见例如: -

AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnExit); 

public void OnExit(object sender, EventArgs e) 
{ 
    // check and turn caps off if neccessary 
} 
+0

OK @ chrisw69但是当我关闭我的应用程序capslock仍然在plz帮助我新的c# – 2013-02-20 20:17:39

+0

你可以注册一个事件,使用上述建议开启锁定,然后使用原始代码关闭大写锁定。 – chrisw 2013-02-20 20:49:42

+0

这种方法正在工作,我把一个消息框,当应用程序关闭时显示。但大写字母仍然ON.plz告诉我它的确切编码。因为上面的一个关闭应用程序时不工作。谢谢 – 2013-02-21 11:44:26