C#读取或设置ScrollLock状态的方法
本文实例讲述了C#读取或设置ScrollLock状态的方法。分享给大家供大家参考。具体如下:
C#读取或者设置ScrollLock状态,允许滚动状态读取或者设置
usingSystem; usingSystem.Runtime.InteropServices; usingSystem.Windows.Forms; namespaceRobvanderWoude { publicclassScrollLock { [DllImport("user32.dll")] staticexternvoidkeybd_event(bytebVk,bytebScan,uintdwFlags,UIntPtrdwExtraInfo); constintKEYEVENTF_EXTENDEDKEY=0x1; constintKEYEVENTF_KEYUP=0x2; publicstaticintMain(string[]args) { try { boolscrollLock; boolnewState=false; boolsetState=false; boolsetVerbose=false; boolverbose=true; if(args.Length>2) { returnWriteError("Invalidcommandlineargument(s)."); } else { foreach(stringarginargs) { switch(arg.ToUpper()) { case"/?": case"-H": case"/HELP": case"-HELP": case"--HELP": returnWriteError(string.Empty); case"/Q": case"-Q": case"/QUIET": case"-QUIET": case"--QUIET": if(setVerbose) { returnWriteError("Duplicateswitchnotallowed."); } setVerbose=true; verbose=false; break; case"/V": case"-V": case"/VERBOSE": case"-VERBOSE": case"--VERBOSE": if(setVerbose) { returnWriteError("Duplicateswitchnotallowed."); } setVerbose=true; verbose=true; break; case"0": case"OFF": if(setState) { returnWriteError("Duplicateargumentnotallowed."); } setState=true; newState=false; break; case"1": case"ON": if(setState) { returnWriteError("Duplicateargumentnotallowed."); } setState=true; newState=true; break; default: returnWriteError("Invalidcommandlineargument"+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(Exceptione) { returnWriteError(e); } } publicstaticintWriteError(Exceptione) { returnWriteError(e==null?null:e.Message); } publicstaticintWriteError(stringerrorMessage) { 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,Version1.01"); Console.Error.WriteLine("ReadorsetScrollLockkeystate"); 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("setScrollLockoff"); 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("setScrollLockon"); Console.ForegroundColor=ConsoleColor.White; Console.Error.Write("/Q"); Console.ResetColor(); Console.Error.WriteLine("uietwon'tdisplayanythingonscreen"); Console.ForegroundColor=ConsoleColor.White; Console.Error.Write("/V"); Console.ResetColor(); Console.Error.WriteLine("erbosedisplaysthe(new)ScrollLockkeystateonscreen(default)"); Console.Error.WriteLine(); Console.Error.WriteLine("Notes:An\"errorlevel\"0isreturnedifScrollLockisoff,2if"); Console.Error.WriteLine("ScrollLockison,or1incaseof(commandline)errors."); Console.Error.WriteLine(); Console.Error.WriteLine("WrittenbyRobvanderWoude"); return1; } } }
希望本文所述对大家的C#程序设计有所帮助。