键盘右上角的灯亮不亮的检测。(完整些)

解决方案 »

  1.   

    using   System;   
      using   System.Runtime.InteropServices;   
      using   System.Text;   
        
      namespace   ConsoleApplication8{   
          class   Class1{   
              [STAThread]   
              static   void   Main(string[]   args){   
                  //   Display   current   status   of   keys.   
                  Console.WriteLine(   
                      "**BEFORE**\r\nCAP:   {0}\r\nSCR:   {1}\r\nNUM:   {2}",     
                      Keyboard.GetState(VirtualKeys.VK_CAPITAL)?"ON":"OFF",   
                      Keyboard.GetState(VirtualKeys.VK_SCROLL)?"ON":"OFF",   
                      Keyboard.GetState(VirtualKeys.VK_NUMLOCK)?"ON":"OFF"   
                  );   
                  //Toggle   all   the   keys:   
                  Keyboard.SetState(   
                      VirtualKeys.VK_CAPITAL,     
                      !Keyboard.GetState(VirtualKeys.VK_CAPITAL)   
                  );   
                  Keyboard.SetState(   
                      VirtualKeys.VK_SCROLL,     
                      !Keyboard.GetState(VirtualKeys.VK_SCROLL)   
                  );   
                  Keyboard.SetState(   
                      VirtualKeys.VK_NUMLOCK,     
                      !Keyboard.GetState(VirtualKeys.VK_NUMLOCK)   
                  );   
                  //   Display   new   status   of   keys.   
                  Console.WriteLine(   
                      "\r\n**AFTER**\r\nCAP:   {0}\r\nSCR:   {1}\r\nNUM:   {2}",     
                      Keyboard.GetState(VirtualKeys.VK_CAPITAL)?"ON":"OFF",   
                      Keyboard.GetState(VirtualKeys.VK_SCROLL)?"ON":"OFF",   
                      Keyboard.GetState(VirtualKeys.VK_NUMLOCK)?"ON":"OFF"   
                  );   
                  Console.ReadLine();   
              }   
          }   
          public   enum   VirtualKeys:   byte{   
              VK_NUMLOCK   =   0x90,   
              VK_SCROLL   =   0x91,   
              VK_CAPITAL   =   0x14   
          }   
          class   Keyboard{   
              const   uint   KEYEVENTF_EXTENDEDKEY   =   0x1;   
              const   uint   KEYEVENTF_KEYUP   =   0x2;   
              [DllImport("user32.dll")]   
              static   extern   short   GetKeyState(int   nVirtKey);   
              [DllImport("user32.dll")]   
              static   extern   void   keybd_event(   
                  byte   bVk,     
                  byte   bScan,     
                  uint   dwFlags,     
                  uint   dwExtraInfo   
              );   
              public   static   bool   GetState(VirtualKeys   Key){   
                  return   (GetKeyState((int)Key)==1);   
              }   
              public   static   void   SetState(VirtualKeys   Key,   bool   State){   
                  if(State!=GetState(Key)){   
                      keybd_event(   
                          (byte)Key,     
                          0x45,     
                          KEYEVENTF_EXTENDEDKEY   |   0,     
                          0   
                      );   
                      keybd_event(   
                          (byte)Key,     
                          0x45,     
                          KEYEVENTF_EXTENDEDKEY   |   KEYEVENTF_KEYUP,     
                          0   
                      );   
                  }   
              }   
          }   
      }
      

  2.   

    前两天刚看到的代码,利用 user32.dll 模拟键盘操作!
      

  3.   

    朋友你的是:C#控制台应用程序吧,谢谢。很不错啊!
    有没有c#.net winform的程序啊.
      

  4.   

    能实现了啊,谢谢!不过谁能帮我解释一下
      [DllImport("user32.dll")]  
       const   uint   KEYEVENTF_EXTENDEDKEY   =   0x1;   
    等等。类API的使用方法啊