C#读取或设置ScrollLock

C#读取或者设置ScrollLock状态,允许滚动状态读取或者设置
 using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace RobvanderWoude {  public class ScrollLock  {   [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 int Main(string[] args)   {    try   {     bool scrollLock;     bool newState = false;     bool setState = false;     bool setVerbose = false;     bool verbose = true;     if ( args.Length > 2 )     {      return WriteError("Invalid command line argument(s).");     }     else    {      foreach ( string arg in args )      {       switch ( arg.ToUpper( ) )       {        case "/?":        case "-H":        case "/HELP":        case "-HELP":        case "--HELP":         return WriteError(string.Empty);        case "/Q":        case "-Q":        case "/QUIET":        case "-QUIET":        case "--QUIET":         if ( setVerbose )         {          return WriteError("Duplicate switch not allowed.");         }         setVerbose = true;         verbose = false;         break;        case "/V":        case "-V":        case "/VERBOSE":        case "-VERBOSE":        case "--VERBOSE":         if ( setVerbose )         {          return WriteError("Duplicate switch not allowed.");         }         setVerbose = true;         verbose = true;         break;        case "0":        case "OFF":         if ( setState )         {          return WriteError("Duplicate argument not allowed.");         }         setState = true;         newState = false;         break;        case "1":        case "ON":         if ( setState )         {          return WriteError("Duplicate argument not allowed.");         }         setState = true;         newState = true;         break;        default:         return WriteError("Invalid command line argument "+arg);       }      }     }     if ( Control.IsKeyLocked( Keys.Scroll ) )     {      scrollLock = true;      if ( setState && !newState )      {       keybd_event(0x91, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0);       keybd_event(0x91, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr) 0);      }     }     else    {      scrollLock = false;      if ( setState && newState )      {       keybd_event(0x91,0x45,KEYEVENTF_EXTENDEDKEY,(UIntPtr) 1);       keybd_event(0x91,0x45,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,(UIntPtr) 1);      }     }     scrollLock = Control.IsKeyLocked( Keys.Scroll );     if ( verbose )     {      Console.Write( "ScrollLock = " );      Console.ForegroundColor = ConsoleColor.White;      Console.WriteLine( ( scrollLock ? "ON" : "OFF" ) );      Console.ResetColor( );     }     return ( scrollLock ? 2 : 0 );    }    catch ( Exception e )    {     return WriteError( e );    }   }   public static int WriteError( Exception e )   {    return WriteError( e == null ? null : e.Message );   }   public static int WriteError( string errorMessage )   {    if ( string.IsNullOrEmpty( errorMessage ) == false )    {     Console.Error.WriteLine( );     Console.ForegroundColor = ConsoleColor.Red;     Console.Error.Write( "ERROR: " );     Console.ForegroundColor = ConsoleColor.White;     Console.Error.WriteLine( errorMessage );     Console.ResetColor( );    }    Console.Error.WriteLine( );    Console.Error.WriteLine( "ScrollLock, Version 1.01" );    Console.Error.WriteLine( "Read or set ScrollLock key state" );    Console.Error.WriteLine( );    Console.Error.Write( "Usage: " );    Console.ForegroundColor = ConsoleColor.White;    Console.Error.WriteLine("SCROLLLOCK [ 0 | 1 | ON | OFF ] [ /Quiet | /Verbose ]");    Console.ResetColor( );    Console.Error.WriteLine( );    Console.Error.Write( "Where: " );    Console.ForegroundColor = ConsoleColor.White;    Console.Error.Write( "0" );    Console.ResetColor( );    Console.Error.Write( " or " );    Console.ForegroundColor = ConsoleColor.White;    Console.Error.Write( "OFF" );    Console.ResetColor( );    Console.Error.WriteLine( "  set ScrollLock off" );    Console.ForegroundColor = ConsoleColor.White;    Console.Error.Write( "    1" );    Console.ResetColor( );    Console.Error.Write( " or " );    Console.ForegroundColor = ConsoleColor.White;    Console.Error.Write( "ON" );    Console.ResetColor( );    Console.Error.WriteLine( "  set ScrollLock on" );    Console.ForegroundColor = ConsoleColor.White;    Console.Error.Write( "    /Q" );    Console.ResetColor( );    Console.Error.WriteLine( "uiet   won't display anything on screen" );    Console.ForegroundColor = ConsoleColor.White;    Console.Error.Write( "    /V" );    Console.ResetColor( );    Console.Error.WriteLine("erbose displays the (new) ScrollLock key state on screen (default)");    Console.Error.WriteLine();    Console.Error.WriteLine("Notes: An \"errorlevel\" 0 is returned if ScrollLock is off, 2 if");    Console.Error.WriteLine(" ScrollLock is on, or 1 in case of (command line) errors.");    Console.Error.WriteLine();    Console.Error.WriteLine("Written by Rob van der Woude");    return 1;   }  } } 
 codego.net代码提供

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30190493/viewspace-1584515/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30190493/viewspace-1584515/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值