用C#程序实现键盘和鼠标的模拟

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

using System;

using System.Runtime.InteropServices;

using System.Text;

namespace ConsoleApplication8{

class Class1{

[STAThread]

static void Main(string[] args){

// Display current status of keys.

Console.WriteLine(

"**BEFORE**\r\nCAP: {0}\r\nSCR: {1}\r\nNUM: {2}",

Keyboard.GetState(VirtualKeys.VK_CAPITAL)?"ON":"OFF",

Keyboard.GetState(VirtualKeys.VK_SCROLL)?"ON":"OFF",

Keyboard.GetState(VirtualKeys.VK_NUMLOCK)?"ON":"OFF"

);

// Toggle all the keys:

Keyboard.SetState(

VirtualKeys.VK_CAPITAL,

!Keyboard.GetState(VirtualKeys.VK_CAPITAL)

);

Keyboard.SetState(

VirtualKeys.VK_SCROLL,

!Keyboard.GetState(VirtualKeys.VK_SCROLL)

);

Keyboard.SetState(

VirtualKeys.VK_NUMLOCK,

!Keyboard.GetState(VirtualKeys.VK_NUMLOCK)

);

// Display new status of keys.

Console.WriteLine(

"\r\n**AFTER**\r\nCAP: {0}\r\nSCR: {1}\r\nNUM: {2}",

Keyboard.GetState(VirtualKeys.VK_CAPITAL)?"ON":"OFF",

Keyboard.GetState(VirtualKeys.VK_SCROLL)?"ON":"OFF",

Keyboard.GetState(VirtualKeys.VK_NUMLOCK)?"ON":"OFF"

);

Console.ReadLine();

}

}

public enum VirtualKeys: byte{

VK_NUMLOCK = 0x90,

VK_SCROLL = 0x91,

VK_CAPITAL = 0x14

}

class Keyboard{

const uint KEYEVENTF_EXTENDEDKEY = 0x1;

const uint KEYEVENTF_KEYUP = 0x2;

[DllImport("user32.dll")]

static extern short GetKeyState(int nVirtKey);

[DllImport("user32.dll")]

static extern void keybd_event(

byte bVk,

byte bScan,

uint dwFlags,

uint dwExtraInfo

);

public static bool GetState(VirtualKeys Key){

return (GetKeyState((int)Key)==1);

}

public static void SetState(VirtualKeys Key, bool State){

if(State!=GetState(Key)){

keybd_event(

(byte)Key,

0x45,

KEYEVENTF_EXTENDEDKEY | 0,

0

);

keybd_event(

(byte)Key,

0x45,

KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,

0

);

}

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航