C#讀取或設(shè)置ScrollLock狀態(tài)的方法
更新時(shí)間:2015年04月18日 10:47:34 作者:work24
這篇文章主要介紹了C#讀取或設(shè)置ScrollLock狀態(tài)的方法,涉及C#操作ScrollLock滾動(dòng)狀態(tài)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了C#讀取或設(shè)置ScrollLock狀態(tài)的方法。分享給大家供大家參考。具體如下:
C#讀取或者設(shè)置ScrollLock狀態(tài),允許滾動(dòng)狀態(tài)讀取或者設(shè)置
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;
}
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#?彈出窗口show()和showdialog()的兩種方式
本文主要介紹了C#?彈出窗口show()和showdialog()的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
C# 使用相同權(quán)限調(diào)用 cmd 傳入命令的方法
本文告訴大家如何使用相同權(quán)限調(diào)用cmd并且傳入命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
可替代log4j日志的c#簡(jiǎn)單日志類隊(duì)列實(shí)現(xiàn)類代碼分享
簡(jiǎn)單日志類隊(duì)列實(shí)現(xiàn)??砂刺熘茉履甏笮》指钗募?珊?jiǎn)單替代log4j2013-12-12
C#從實(shí)體對(duì)象集合中導(dǎo)出Excel的代碼
數(shù)據(jù)的導(dǎo)出是項(xiàng)目中經(jīng)常要實(shí)現(xiàn)的功能,就拿最常見的要導(dǎo)出成Excel來說,網(wǎng)上看來看去,都是介紹從Datatable中導(dǎo)出2008-08-08

