C#读取或设置ScrollLock状态的方法


本文实例讲述了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;
  }
 }
}

希望本文所述对大家的C#程序设计有所帮助。


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3