本文实例讲述了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#程序设计有所帮助。
本文地址:https://www.stayed.cn/item/16005
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我