当前位置:文档之家› C#模拟键盘鼠标事件-SendKeys

C#模拟键盘鼠标事件-SendKeys

C#模拟键盘鼠标事件-SendKeys
C#模拟键盘鼠标事件-SendKeys

C#模拟键盘鼠标事件-SendKeys

2007-09-18 15:13 7689人阅读评论(1) 收藏举报1.模拟键盘事件

System.Windows.Forms.SendKeys

以下是SendKeys 的一些特殊键代码表。

键代码

BACKSPACE {BACKSPACE}、{BS} 或{BKSP}

BREAK {BREAK}

CAPS LOCK {CAPSLOCK}

DEL 或DELETE {DELETE} 或{DEL}

DOWN ARROW(下箭头键){DOWN}

END {END}

ENTER {ENTER} 或~

ESC {ESC}

HELP {HELP}

HOME {HOME}

INS 或INSERT {INSERT} 或{INS}

LEFT ARROW(左箭头键){LEFT}

NUM LOCK {NUMLOCK}

PAGE DOWN {PGDN}

PAGE UP {PGUP}

PRINT SCREEN {PRTSC}(保留,以备将来使用)

RIGHT ARROW(右箭头键){RIGHT}

SCROLL LOCK {SCROLLLOCK}

TAB {TAB}

UP ARROW(上箭头键){UP}

F1 {F1}

F2 {F2}

F3 {F3}

F4 {F4}

F5 {F5}

F6 {F6}

F7 {F7}

F8 {F8}

F9 {F9}

F10 {F10}

F11 {F11}

F12 {F12}

F13 {F13}

F14 {F14}

F15 {F15}

F16 {F16}

数字键盘加号{ADD}

数字键盘减号{SUBTRACT}

数字键盘乘号{MULTIPLY}

数字键盘除号{DIVIDE}

若要指定与SHIFT、CTRL 和ALT 键的任意组合一起使用的键,请在这些键代码之前加上以下一个或多个代码:

键代码

SHIFT + (SHIFT="+")

CTRL ^ (CTRL="^") 如果输入

ALT % private void button1_Click(object sender, System.EventArgs e) {//英文输入

this.richTextBox1.Focus();

for(int i=65;i<91;i++)

{

char Letter=(char)i;

SendKeys.Send(Letter.ToString());

System.Threading.Thread.Sleep(100);

SendKeys.Flush();

}

for(int i=97;i<123;i++)

{

char Letter=(char)i;

SendKeys.Send(Letter.ToString());

System.Threading.Thread.Sleep(100);

SendKeys.Flush();

}

private void button3_Click(object sender, System.EventArgs e) {//数字输入

this.richTextBox1.Focus();

for(int i=0;i<10;i++)

{

SendKeys.Send(i.ToString());

System.Threading.Thread.Sleep(100);

SendKeys.Flush();

}

}

private void button4_Click(object sender, System.EventArgs e) {//Backspace

this.richTextBox1.Focus();

SendKeys.Send("{Backspace}");

}

private void button5_Click(object sender, System.EventArgs e) {//Home

this.richTextBox1.Focus();

SendKeys.Send("{Home}");

}

private void button6_Click(object sender, System.EventArgs e) {//End

this.richTextBox1.Focus();

SendKeys.Send("{End}");

}

private void button7_Click(object sender, System.EventArgs e) {//Enter

this.richTextBox1.Focus();

SendKeys.Send("{Enter}");

private void button8_Click(object sender, System.EventArgs e) {//Delete

this.richTextBox1.Focus();

SendKeys.Send("{Delete}");

}

private void button2_Click(object sender, System.EventArgs e) {//Shift+Home

this.richTextBox1.Focus();

SendKeys.Send("+{Home}");

}

private void button9_Click(object sender, System.EventArgs e) {//Shift+End

this.richTextBox1.Focus();

SendKeys.Send("+{End}");

}

看下方法的说明

public class SendKeys : System.Object

System.Windows.Forms 的成员

摘要:

提供将键击发送到应用程序的方法。

public static void Send ( System.String keys ) System.Windows.Forms.SendKeys 的成员

摘要:

向活动应用程序发送击键。

public static void Sleep ( System.TimeSpan timeout ) System.Threading.Thread 的成员

摘要:

将当前线程阻塞指定的时间。

public static void Flush ( )

System.Windows.Forms.SendKeys 的成员

2.模拟鼠标

有时,我们需在我们的程序中模拟鼠标的移动、点击等动作。——比如,一个再现用户操作的宏,或者一个演示操作方法的Demo程序。那么,我们在.Net中如何实现呢?

.Net并没有提供改变鼠标指针位置、模拟点击操作的函数;但是Windows API提供了。其中一个是:

[DllImport("user32.dll")]

static extern bool SetCursorPos(int X, int Y);

该函数可以改变鼠标指针的位置。其中X,Y是相对于屏幕左上角的绝对位置。

另一个函数是:

[DllImport("user32.dll")]

static extern void mouse_event(MouseEventFlag flags, in

t dx, int dy, uint data, UIntPtr extraInfo);

这个函数不仅可以设置鼠标指针绝对的位置,而且可以以相对坐标来设置。另外,该函数还可以模拟鼠标左右键点击、鼠标滚轮操作等。其中的MouseEventFlag是一个基于uint类型的枚举,定义如下:

[Flags]

enum MouseEventFlag : uint

{

Move = 0x0001,

LeftDown = 0x0002,

LeftUp = 0x0004,

RightDown = 0x0008,

RightUp = 0x0010,

MiddleDown = 0x0020,

MiddleUp = 0x0040,

XDown = 0x0080,

XUp = 0x0100,

Wheel = 0x0800,

VirtualDesk = 0x4000,

Absolute = 0x8000

}

关于这两个函数的详细说明,可以查看MSDN Library或者Windows的Platform SDK文档。

下面的演示程序(完整版源代码,https://www.doczj.com/doc/4914905676.html, 2005/C#)演示了使用上面的函数,控制鼠标移动到任务栏并点击“开始”按钮的方法。

(该程序使用了FindWindowEx等API函数来查找任务栏及开始菜单)点这里下载

posted on 2007-08-07 22:01 Thunderdanky阅读(185) 评论(3)编辑收藏所属分类: .NET技术文章

FeedBack:

# re: C#模拟键盘鼠标事件

2007-08-07 22:01 | Thunderdanky

看一个参考MSDN上的

如何:在代码中模拟鼠标和键盘事件

Windows 窗体提供以编程方式模拟鼠标和键盘输入的几个选项。本主题提供这些选项的概述。

模拟鼠标输入

模拟鼠标事件的最佳方法是调用引发要模拟的鼠标事件的OnEventName 方法。此选项通常只在自定义控件和窗体中是可能的,因为引发事件的方法受保护,而且不能从控件或窗体外部访问。例如,下面的步骤阐释如何用代码模拟单击鼠标右键的事件。

以编程方式单击鼠标右键

创建一个Button 属性设置为System.Windows.Forms.MouseButtons.Right 值的MouseEventArgs。

将此MouseEventArgs 用作参数调用OnMouseClick 方法。

有关自定义控件的更多信息,请参见设计时开发Windows 窗体控件。

还有其他模拟鼠标输入的方法。例如,可以通过编程方式设置一个表示通常通过鼠标输入设置的状态的控件属性(如CheckBox 控件的Checked 属性),或者您可以直接调用附加到要模拟的事件的委托。

模拟键盘输入

虽然您可以通过使用上面讨论的鼠标输入策略来模拟键盘输入,但Windows 窗体还提供了用于将键击发送到活动应用程序的SendKeys 类。

警告

如果您的应用程序打算用于可以使用各种键盘的国际使用,则使用

System.Windows.Forms.SendKeys.Send(System.String) 可能产生不可预知的结果,因而应当避免。

注意

SendKeys 类已针对 .NET Framework 3.0 进行了更新,能够用于在Windows Vista 上运行的应用程序中。Windows Vista 增强的安全性(称为用户账户控件或UAC)使以前的实现无法按预期方式工作。

SendKeys 类容易出现计时问题,有些开发人员必须解决这个问题。更新的实现仍然容易发生计时问题,但速度略有提高,并且可能要求更改解决方法。SendKeys 类首先会尝试使用以前的实现,失败后再使用新的实现。因此,SendKeys 类的行为可能因操作系统的不同而有所差异。此外,当SendKeys 类使用新的实现时,SendWait 方法在消息被发送到另一进程时不会等待消息的处理。

如果您的应用程序依赖于不受操作系统影响的一致性行为,则可通过向app.config 文件添加以下应用程序设置,强制SendKeys 类使用新的实现。

要强制SendKeys 类使用以前的实现,请改用值"JournalHook"。

向同一应用程序发送键击

调用SendKeys 类的Send 或SendWait 方法。应用程序的活动控件将接收指定的键击。下面的代码示例使用Send 在用户双击窗体的图面时模拟按Enter 键。此示例假定一个Form,该窗体具有单个Tab 键索引为0 的Button 控件。

Visual Basic 复制代码

' Send a key to the button when the user double-clicks anywhere

' on the form.

Private Sub Form1_DoubleClick(ByVal sender As Object, _

ByVal e As EventArgs) Handles Me.DoubleClick

' Send the enter key to the button, which raises the click

' event for the button. This works because the tab stop of

' the button is 0.

SendKeys.Send("{ENTER}")

End Sub

C# 复制代码

// Send a key to the button when the user double-clicks anywhere

// on the form.

private void Form1_DoubleClick(object sender, EventArgs e)

{

// Send the enter key to the button, which raises the click

// event for the button. This works because the tab stop of

// the button is 0.

SendKeys.Send("{ENTER}");

}

C++ 复制代码

// Send a key to the button when the user double-clicks anywhere

// on the form.

private:

void Form1_DoubleClick(Object^ sender, EventArgs^ e)

{

// Send the enter key to the button, which triggers the click

// event for the button. This works because the tab stop of

// the button is 0.

SendKeys::Send("{ENTER}");

}

向另一个应用程序发送键击

激活将接收键击的应用程序窗口,然后调用Send 或SendWait 方法。由于没有激活另一个应用程序的托管方法,因此必须使用本机Windows 方法强制将焦点放在其他应用程序上。下面的代码示例使用平台调用来调用FindWindow 和SetForegroundWindow 方法,以激活计算器应用程序窗口,然后调用SendWait 向计算器应用程序发出一系列计算。

Visual Basic 复制代码

' Get a handle to an application window.

Declare Auto Function FindWindow Lib "USER32.DLL" ( _

ByVal lpClassName As String, _

ByVal lpWindowName As String) As IntPtr

' Activate an application window.

Declare Auto Function SetForegroundWindow Lib "USER32.DLL" _ (ByVal hWnd As IntPtr) As Boolean

' Send a series of key presses to the Calculator application.

Private Sub button1_Click(ByVal sender As Object, _

ByVal e As EventArgs) Handles button1.Click

' Get a handle to the Calculator application. The window class

' and window name were obtained using the Spy++ tool.

Dim calculatorHandle As IntPtr = FindWindow("SciCalc", "Calculator")

' Verify that Calculator is a running process.

If calculatorHandle = IntPtr.Zero Then

MsgBox("Calculator is not running.")

Return

End If

' Make Calculator the foreground application and send it

' a set of calculations.

SetForegroundWindow(calculatorHandle)

SendKeys.SendWait("111")

SendKeys.SendWait("*")

SendKeys.SendWait("11")

SendKeys.SendWait("=")

End Sub

C# 复制代码

// Get a handle to an application window.

[DllImport("USER32.DLL")]

public static extern IntPtr FindWindow(string lpClassName,

string lpWindowName);

// Activate an application window.

[DllImport("USER32.DLL")]

public static extern bool SetForegroundWindow(IntPtr hWnd);

// Send a series of key presses to the Calculator application.

private void button1_Click(object sender, EventArgs e)

{

// Get a handle to the Calculator application. The window class

// and window name were obtained using the Spy++ tool.

IntPtr calculatorHandle = FindWindow("SciCalc", "Calculator");

// Verify that Calculator is a running process.

if (calculatorHandle == IntPtr.Zero)

{

MessageBox.Show("Calculator is not running.");

return;

}

// Make Calculator the foreground application and send it

// a set of calculations.

SetForegroundWindow(calculatorHandle);

SendKeys.SendWait("111");

SendKeys.SendWait("*");

SendKeys.SendWait("11");

SendKeys.SendWait("=");

}

C++ 复制代码

// Get a handle to an application window.

public:

[DllImport("USER32.DLL")]

static IntPtr FindWindow(String^ lpClassName, String^ lpWindowName); public:

// Activate an application window.

[DllImport("USER32.DLL")]

static bool SetForegroundWindow(IntPtr hWnd);

// Send a series of key presses to the Calculator application. private:

void button1_Click(Object^ sender, EventArgs^ e)

{

// Get a handle to the Calculator application. The window class // and window name were obtained using the Spy++ tool. IntPtr calculatorHandle = FindWindow("SciCalc", "Calculator");

// Verify that Calculator is a running process.

if (calculatorHandle == IntPtr::Zero)

{

MessageBox::Show("Calculator is not running.");

return;

}

// Make Calculator the foreground application and send it

// a set of calculations.

SetForegroundWindow(calculatorHandle);

SendKeys::SendWait("111");

SendKeys::SendWait("*");

SendKeys::SendWait("11");

SendKeys::SendWait("=");

}

示例

下面的代码示例是前面代码示例的完整应用。

Visual Basic 复制代码

Imports System

Imports System.Runtime.InteropServices

Imports System.Drawing

Imports System.Windows.Forms

Namespace SimulateKeyPress

Class Form1

Inherits Form

Private WithEvents button1 As New Button()

_

Public Shared Sub Main()

Application.EnableVisualStyles()

Application.Run(New Form1())

End Sub

Public Sub New()

button1.Location = New Point(10, 10)

button1.TabIndex = 0

button1.Text = "Click to automate Calculator"

button1.AutoSize = True

Me.Controls.Add(button1)

End Sub

' Get a handle to an application window.

Declare Auto Function FindWindow Lib "USER32.DLL" ( _

ByVal lpClassName As String, _

ByVal lpWindowName As String) As IntPtr

' Activate an application window.

Declare Auto Function SetForegroundWindow Lib "USER32.DLL" _ (ByVal hWnd As IntPtr) As Boolean

' Send a series of key presses to the Calculator application.

Private Sub button1_Click(ByVal sender As Object, _

ByVal e As EventArgs) Handles button1.Click

' Get a handle to the Calculator application. The window class

' and window name were obtained using the Spy++ tool.

Dim calculatorHandle As IntPtr = FindWindow("SciCalc", "Calculator")

' Verify that Calculator is a running process.

If calculatorHandle = IntPtr.Zero Then

MsgBox("Calculator is not running.")

Return

End If

' Make Calculator the foreground application and send it

' a set of calculations.

SetForegroundWindow(calculatorHandle)

SendKeys.SendWait("111")

SendKeys.SendWait("*")

SendKeys.SendWait("11")

SendKeys.SendWait("=")

End Sub

' Send a key to the button when the user double-clicks anywhere ' on the form.

Private Sub Form1_DoubleClick(ByVal sender As Object, _ ByVal e As EventArgs) Handles Me.DoubleClick

' Send the enter key to the button, which raises the click

' event for the button. This works because the tab stop of

' the button is 0.

SendKeys.Send("{ENTER}")

End Sub

End Class

End Namespace

C# 复制代码

using System;

using System.Runtime.InteropServices;

using System.Drawing;

using System.Windows.Forms;

namespace SimulateKeyPress

{

class Form1 : Form

{

private Button button1 = new Button();

[STAThread]

public static void Main()

{

Application.EnableVisualStyles();

Application.Run(new Form1());

}

public Form1()

{

button1.Location = new Point(10, 10);

button1.TabIndex = 0;

button1.Text = "Click to automate Calculator";

button1.AutoSize = true;

button1.Click += new EventHandler(button1_Click);

this.DoubleClick += new EventHandler(Form1_DoubleClick); this.Controls.Add(button1);

}

// Get a handle to an application window.

[DllImport("USER32.DLL")]

public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

// Activate an application window.

[DllImport("USER32.DLL")]

public static extern bool SetForegroundWindow(IntPtr hWnd);

// Send a series of key presses to the Calculator application. private void button1_Click(object sender, EventArgs e)

{

// Get a handle to the Calculator application. The window class

// and window name were obtained using the Spy++ tool.

IntPtr calculatorHandle = FindWindow("SciCalc", "Calculator");

// Verify that Calculator is a running process.

if (calculatorHandle == IntPtr.Zero)

{

MessageBox.Show("Calculator is not running.");

return;

}

// Make Calculator the foreground application and send it

// a set of calculations.

SetForegroundWindow(calculatorHandle);

SendKeys.SendWait("111");

SendKeys.SendWait("*");

SendKeys.SendWait("11");

SendKeys.SendWait("=");

}

// Send a key to the button when the user double-clicks anywhere // on the form.

private void Form1_DoubleClick(object sender, EventArgs e) {

// Send the enter key to the button, which raises the click

// event for the button. This works because the tab stop of

// the button is 0.

SendKeys.Send("{ENTER}");

}

}

}

C++ 复制代码

#using

#using

#using

using namespace System;

using namespace System::Runtime::InteropServices;

using namespace System::Drawing;

using namespace System::Windows::Forms;

namespace SimulateKeyPress

{

public ref class Form1 : public Form

{

public:

Form1()

{

Button^ button1 = gcnew Button();

button1->Location = Point(10, 10);

button1->TabIndex = 0;

button1->Text = "Click to automate Calculator";

button1->AutoSize = true;

button1->Click += gcnew EventHandler(this, &Form1::button1_Click);

this->DoubleClick += gcnew EventHandler(this,

&Form1::Form1_DoubleClick);

this->Controls->Add(button1);

}

// Get a handle to an application window.

public:

[DllImport("USER32.DLL")]

static IntPtr FindWindow(String^ lpClassName, String^ lpWindowName); public:

// Activate an application window.

[DllImport("USER32.DLL")]

static bool SetForegroundWindow(IntPtr hWnd);

// Send a series of key presses to the Calculator application. private:

void button1_Click(Object^ sender, EventArgs^ e)

{

// Get a handle to the Calculator application. The window class

// and window name were obtained using the Spy++ tool.

IntPtr calculatorHandle = FindWindow("SciCalc", "Calculator");

// Verify that Calculator is a running process.

if (calculatorHandle == IntPtr::Zero)

{

MessageBox::Show("Calculator is not running.");

return;

}

// Make Calculator the foreground application and send it

// a set of calculations.

SetForegroundWindow(calculatorHandle);

SendKeys::SendWait("111");

SendKeys::SendWait("*");

SendKeys::SendWait("11");

SendKeys::SendWait("=");

}

// Send a key to the button when the user double-clicks anywhere // on the form.

private:

void Form1_DoubleClick(Object^ sender, EventArgs^ e)

{

// Send the enter key to the button, which triggers the click

// event for the button. This works because the tab stop of

// the button is 0.

SendKeys::Send("{ENTER}");

}

};

}

[STAThread]

int main()

{

Application::EnableVisualStyles();

Application::Run(gcnew SimulateKeyPress::Form1());

}

C#模拟键盘鼠标事件

一个简单的模拟键盘鼠标操作的类

一个简单的模拟键盘鼠标操作的类,扩充VirtualKeys 枚举就可以了,或者直接写!

using System;

using System.Runtime.InteropServices;

using System.Text;

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 enum VirtualKeys: byte

{

VK_NUMLOCK = 0x90, //数字锁定键

VK_SCROLL = 0x91, //滚动锁定

VK_CAPITAL = 0x14, //大小写锁定

VK_A = 62

}

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,

);

keybd_event(

(byte)Key,

0x45,

KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0

);

}

}

}

示例:

鼠标的键盘使用方法

就可以用数字键盘控制了.1,2,3,6,9,8,7,4八个数字键是鼠标的(八个)方向键的替代键,5代替鼠标的单击(既可以是左键的单击,也可以是右键的单击,具体是哪 个键要看在tray中的鼠标键状态图标的指示),揿下5在鼠标键状态图标上的反应是相应的键的一次闪烁;“+”代替双击(同样也没有指定是哪个键的双击),在鼠标键图标 上的反应是相应的键连续闪烁两次;“*”代替左右两键的同时单击,在鼠标键图标上 的反应是相应的两个键同时闪烁一次,“/”是切换键,既是单击与双击间的切换,又是左键和右键间的切换;所有的这些状态都会在状态栏中的鼠标键图标上得到体现,当然左右键的状态是非常明显的显示在相应的图标上,而单击显示为灰色,双击显示为 黑色。“0(Ins)”键代替按下鼠标键(同样没有指明左右键),在鼠标键状态图标上的反应是相应的键由灰变黑,这个键为我们拖动文件夹,选择文档的部分内容提供了方便;“·(del)”键则代替释放鼠标键,在鼠标键图标上的反应是相应的键由黑变灰。还可以设置鼠标移动的速度(crl表示加速,shift表示减速),数字小键盘的开关键 不管你的桌面处于任何状态,按Win+E快捷键,打开Windows的资源管理器。此时 光标的默认位置定位于"我的电脑"上,按方向键移动到"控制面板"上,然后按Tab键跳动光标,继续按动方向键,选择"辅助选项",按Enter键确认,这时你会发现弹出一个"辅助选项属性"对话框。将Tab和方向键配合,选择对话框中的"鼠标"标签卡。到这一步,我们就可以着手设置"鼠标键"了。按下快捷键Alt+M,选中"使用'鼠标键'"复选框,就可以使"鼠标键"生效,做完这一步,可以使用小键盘来控制鼠标的指针方向和点击 操作。 上面的操作仅仅令"鼠标键"生效,如果想进一步设置鼠标键,则按Alt+S键,弹出"鼠 标键设置"对话框。按Alt+U选中"使用快捷方式",则以后你可以按"左Alt+在 Shift+NumLock"键以快速打开(关闭)"鼠标键"。按Alt+H选中"按住Ctrl键进行加速或按Shift键进行减速",则以后利用"鼠标键"移动"鼠标"时,可配合Ctrl键和Shift键 分别加速和减速移动鼠标指针。利用小键盘使用"鼠标键",NumLock是切换开关。如 果按"Alt+N"选定"打开",意即当NumLock按键处于打开状态时,小键盘用作"鼠标键";反之,按"Alt+F"选择"关闭",则意味着当NumLock按键处于关闭状态时,小键盘用作"鼠标键"。同理,按"Alt+S"键,选中"在屏幕上显示鼠标键状态"复选框,则可以看到 任务栏状态区中的"鼠标键"Tray标志,方便日后查看"鼠标键"状态以及设置相关参数。而鼠标键对鼠标操作的方法是: 1、移动 1) 要水平或垂直移动鼠标指针,请按小键盘上的"4"、"6"、"8"、"2"键,分别代表←、→、↑、↓四个方向。

VB编程的键盘控制

V B编程的键盘控制Prepared on 21 November 2021

VB编程的键盘控制 我们利用VisualBASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面,我们就来看一看VB编程中如何进行键盘控制。 一、概述 在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。因而VB提供了KeyPress、KeyUp、KeyDown三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。 键盘事件触发原因 KeyPress按下某ASCII字符键 KeyDown按下键盘的任意键 KeyUp释放键盘的任意键 KeyPress事件无法检测到的情况: SHIFT、CTRL和ALT键的特殊组合。 光标控制键。 HOME、END、PAGEUP、PAGEDOWN等。 数字小键盘的数字键与打字键盘数字键的区别。 不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。 键盘事件彼此不相互排斥。按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。 二、KeyPress事件 在按下与ASCII字符对应的键时将触发KeyPress事件。ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。KeyDown和KeyUp事件能够检测其它功能键、编辑键和光标定位键。当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:PrivateSubText1_KeyPress(KeyAsciiAsInteger) KeyAscii=Asc(Ucase(Chr(KeyAscii))) EndSub KeyAscii参数返回对应所按键的ASCII代码。 也可通过KeyPress事件识别部分控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键: PrivateSubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii=8ThenMsgBox"YouPressedtheBACKSPACEkey." EndSub 注:BACKSPACE键的ASCII值为8。 还可用KeyPress事件改变某些键的缺省行为。例如,当在文本框内按ENTER键就会结束当前行输入并将光标转到下一行(Multiline属性设为True)。在KeyPress事件中截断ENTER键(ASCII 值为13)就可避免这种情况:

adb shell中模拟键盘鼠标事件

Android自动化测试初探-5:再述模拟键盘鼠标事件(adb shell 实现) 2010-07-28 17:01 上一篇博文中讲述了通过Socket编程从外部向Emulator发送键盘鼠标模拟事件,貌似实现细节有点复杂。其实Android还有一种更简单的模拟键盘鼠标事件的方法,那就是通过使用adb shell 命令。 1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列: KeyEvent Value KEYCODE Comment KEYCODE_UNKNOWN 1 KEYCODE_MENU 在SDK2.1的模拟器中命令失效,sendevent命令可行 2 KEYCODE_SOFT_RIGHT 3 KEYCODE_HOME 4 KEYCODE_BACK 5 KEYCODE_CALL 6 KEYCODE_ENDCALL

KEYCODE_0 8 KEYCODE_1 9 KEYCODE_2 10 KEYCODE_3 11 KEYCODE_4 12 KEYCODE_5 13 KEYCODE_6 14 KEYCODE_7 15 KEYCODE_8 16 KEYCODE_9 17 KEYCODE_STAR

KEYCODE_POUND 19 KEYCODE_DPAD_UP 20 KEYCODE_DPAD_DOWN 21 KEYCODE_DPAD_LEFT 22 KEYCODE_DPAD_RIGHT 23 KEYCODE_DPAD_CENTER 24 KEYCODE_VOLUME_UP 25 KEYCODE_VOLUME_DOWN 26 KEYCODE_POWER 27 KEYCODE_CAMERA 28 KEYCODE_CLEAR

如何用键盘控制鼠标的移动和击键

如何用键盘控制鼠标的移动和击键。。。。 2007-12-15 10:22 本文我就是全部用键盘控制鼠标进行复制与粘贴和发贴的。。。。。呵呵,熟悉一下用键盘 来控制鼠标的移动与击键,以备下次鼠标坏了,没法干活。。。。。。 自己看:在“开始”菜单上选择“设置”,“控制面板”,在“控制面板”上双击“辅助选项”图标,单击“鼠标器”标签,然后单击“使用鼠标键”。这样就可以用键盘来控制鼠标的光标,模拟鼠标的鼠标键都指键盘右侧的小键盘(数字键盘),使用时要使NumLock 键处于有效状态。以下就是鼠标键: 移动 8、2、4、6、7、9、1、3键,八个方位 长距离移动 Ctrl+以上八个键 选鼠标左键 / 选鼠标右键— 单击 5 双击 + 拖曳 0(INS) 释放 .(Del) 由此看出,单击鼠标左键即为/,5,拖动窗口为: 先移动到窗口的标题栏,再按INS,然后用“移动”键 将窗口移到合适的位置,最后按Del。 记住,由于数字小键盘不是真的鼠标,所以要领会它的一些规章制度。要领就是先确定下面的操作是左键呢还是右键,以及是单击呢还是双击,鼠标键是按下还是松开?然后再进行相关的操作。 如果您还没有听清的话,或者您想知道得更多一些,请参考相关的帮助文件。 3)用键盘的各种快捷键/组合键来代替鼠标的各种操作,当然这种方法的缺点就是要记忆许多的组合键,如同dos命令相对于windows操作来说的那种麻烦和扰人: [左键]大小键盘上的enter键。 [右键]用shift+F10可以完全代替,而alt+enter则是shift+F10+R的替代键:查看某选项(可以是文件,也可以是文件夹,甚至是硬盘)的属性。 [菜单的弹出与激活]可以用alt键或者组合键ctrl+f10来弹出第一个菜单,或者用alt+相应的字母,直接弹出对应的菜单;在子菜单中,可以直接用相应的缩写字母来执行对应的功能,也可以用键盘中的上下键移到相应的子菜单项上(特别是对于那些子菜单非常多,而我们需要的东东又在倒数几个的位置),再用enter键执行该功能。 [win键]^+ESC [选定、选择]SHIFT+方向键为行选择方式,SHIFT+ALT+方向键为列选择方式(列选择在word

利用VB建立鼠标键盘操作回放

利用VB建立鼠标键盘操作回放 很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作操作,这个功能的实现是使用了Windows的Hook函数。本文介绍如何通过使用VB来实现鼠标键盘操作的纪录和回放。Windows提供API函数SetwindowsHookEx来建立一个Hook,通过这个函数可以将一个程序添加到Hook链中监视Windows消息,函数语法为: Public Declare Function SetWindowsHookEx Lib "user32" _ Alias "SetWindowsHookExA" _ (ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long 其中参数idHook指定建立的监视函数类型。通过Windows MSDN帮助可以看到,SetwindowsHookEx函数提供15种不同的消息监视类型,在这里我们将使用WH_JOURNALRECORD和WH_JOURNALPLAYBACK来监视键盘和鼠标操作。参数lpfn 指定消 息函数,在相应的消息产生后,系统会调用该函数并将消息值传递给该函数供处理。函数的一般形式为: Hookproc (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall; 其中code为系统指示标记,wParam和lParam为附加参数,根据不同的消息监视类型而不同。只要在程序中建立这样 一个函数再通过SetwindowsHookEx函数将它加入到消息监视链中就可以处理消息了。 在不需要监视系统消息时需要调用提供UnHookWindowsHookEx来解除对消息的监视。WH_JOURNALRECORD和WH_JOURNALPLAYBACK类型是两种相反的Hook类型,前者获得鼠标、键盘动作消息,后者回放鼠 标键盘消息。所以在程序中我们需要建立两个消息函数,一个用于纪录鼠标键盘操作并保存到一个数组中,另一个用于 将保存的操作返给系统回放。 下面是具体的程序实现:首先建立一个新工程,在Form1中加入三个CommandButton控件用于控制消息钩子,另外还 可以增加若干Command或者TextBox控件用于检验操作回放的效果。然后在工程中增加一个模块文件,在模块中加入以下 定义和代码: Option Explicit Public Type EVENTMSG message As Long paramL As Long paramH As Long time As Long hwnd As Long End Type Public Declare Function CallNextHookEx Lib "user32" _ (ByVal hHook As Long, _

VB编程的键盘控制

VB编程的键盘控制 我们利用Visual BASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面,我们就来看一看VB编程中如何进行键盘控制。 一、概述 在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。因而VB提供了KeyPress、KeyUp、KeyDown 三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。 KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无法检测到的情况: ◆SHIFT、CTRL和ALT键的特殊组合。 ◆光标控制键。 ◆HOME、END、PAGEUP、PAGEDOWN等。 ◆数字小键盘的数字键与打字键盘数字键的区别。 ◆不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。 键盘事件彼此不相互排斥。按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。 二、KeyPress事件 在按下与ASCII字符对应的键时将触发KeyPress事件。ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。KeyDown 和KeyUp事件能够检测其它功能键、编辑键和光标定位键。当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写: Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAscii = Asc(Ucase(Chr(KeyAscii))) End Sub KeyAscii参数返回对应所按键的ASCII代码。 也可通过KeyPress事件识别部分控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键:

模拟键盘鼠标事件

android中的MotionEvent 及其它事件处理 2014-09-18 08:47 7386人阅读评论(0) 收藏举报 MotionEvent对象 当用户触摸屏幕时将创建一个MotionEvent对象。MotionEvent包含关于发生触摸的位置和时间等细节信息。MotionEvent对象被传递到程序中合适的方法比如View对象的onTouchEvent()方法中。在这些方法中我们可以分析MotionEvent对象那个,以决定要执行的操作。 MotionEvent对象是与用户触摸相关的时间序列,该序列从用户首次触摸屏幕开始,经历手指在屏幕表面的任何移动,直到手指离开屏幕时结束。手指的初次触摸(ACTION_DOWN 操作),滑动(ACTION_MOVE操作)和抬起(ACTION_UP)都会创建MotionEvent对象。所以每次触摸时候这三个操作是肯定发生的,而在移动过程中会产生大量事件,每个事件都会产生对应的MotionEvent对象记录发生的操作,触摸的位置,使用的多大压力,触摸的面积,合适发生,以及最初的ACTION_DOWN和时发生等相关的信息。 在设置事件时我们有2种设置的方式,一种是委托式一种是回调式。第一种就是将事件的处理委托给监听器处理,你可以定义一个View.OnTouchListener接口的子类作为监听器,其中有onTouch()方法。而第二种是重写View类自己本身的onTouchEvent方法,也就是控件自己处理事件。onTouch方法接收一个MotionEvent参数和一个View参数,而onTouchEvent方法仅接收MotionEvent参数。这是因为监听器可以监听多个View 控件的事件。通过MotionEvent方法getation可以得到该Motionevent具体是哪个操作如ACTION_DOWN。 1、MotionEvent中getAction()与getActionMasked()的区别 如果我们在监听Ontouch()里面测试的时候会发现,这两个返回值竟然是一样的。查询API 我们发现ACTION_MASK说明是:Constant Value: 255 (0x000000ff)。也就是哦0Xff. public final intgetAction () Return the kind of action being performed. Consider using getActionMasked() and getActionIndex() to retrieve the separate masked action and pointer index. 翻译意思大概是返回action的类型,考虑使用getActionMasked()和getActionIndex()来获得单独的经过掩码的action和触控点的索引. public final intgetActionMasked () Return the masked action being performed, without pointer index information. Use getActionIndex() to return the index associated with pointer actions.

VB常用快捷键

VB常用快捷键 窗体设置,控件布局时用: alt+v+x可以快速显示出工具框 Alt+P+N 引用 ctrl+左右键头可以移动控件 shift+左右键头调整控件大小 F7 切换到编辑窗口 Shift+f7 切换代码窗口 开发代码,调试代码都能用的: Ctrl+C复制 Ctrl+V粘贴 Ctrl+X剪贴 Ctrl+F查找 开发代码时用的: Tab 向右推 Shift+Tab 向左推 Ctrl+H 替换 Ctrl+J 呵呵,有点显丑。有几个函数。老要看总是记不住,呵呵(Alt+→)ctrl+home jump to 首行 ctrl+end jump to 末尾 调试时使用的: F5 运行 F8 断点运行 F9 设置/清除断点 Ctrl+G 立即窗口 Shift+F2 到定义处 Ctrl+Shift+F9 清除所有断点 Ctrl+shift+F2 到上次编辑处 Ctrl+PauseBreak 强行暂停程序(专门对付死循环之类的) shift+F9 可以监视表达式 Ctrl+W 编辑监视窗口 Ctrl+n n Enter 偶经常要另开一个程序先做试验,你们可能很少用吧?呵呵以上几个,是我使用中最多的。当然。其它的我也有使用。如:Ctrl+J(所选控件置前),Ctrl+J(所选控件置底),F7,Shift+F4还有那些Windows通用的那些快捷

键:Ctrl+C,Ctrl+V ,哈哈,这二个快捷键,偶好像使用次数。也可以在所有使用快捷中前几名呢!哈哈! 1、F1:显示MSDN帮助。当然你要安装MSDN,否则得不到真正的帮助了 2、F2:显示对象浏览器。这里你可以看到对象的各种属性、方法与事件 3、F3:查找一下个满足条件的内容 4、F4:显示当前选中控件的属性窗体 5、F5:运行程序(https://www.doczj.com/doc/4914905676.html,则是F8了) 6、F7:由窗体设计切换到对应的代码窗体 7、F8:单步执行程序 8、F9:切换断点 9、Alt+A:打开外接程序菜单 10、Alt+D:打开调试菜单 11、Alt+E:打开编辑菜单 12、Alt+F:打开文件菜单 13、Alt+H:打开帮助菜单 14、Alt+I:打开图表菜单 15、Alt+O:打开格式菜单 16、Alt+T:打开工具菜单 17、Alt+P:打开工程菜单 18、Alt+R:打开运行菜单 19、Alt+U:打开查询菜单 20、Alt+Q:退出 21、Alt+V:打开视图菜单 22、Alt+W:打开窗口菜单 23、Alt+→:根据输入的字符检索出可以使用的关键字 24、Tab:让选中的代码,集休缩进 25、Shift+F2:查看当前光标所在的变量或函数、子过程的定义。这一快捷键很方便,比如程序中有一个 call PubFunction ,你只要将鼠标在PubFunction 任意一处点中,然后按Shift+F2就可以直接转到函数的声明处。 26、Shift+F4:打开属性页窗口,与F4不一样哦 27、Shift+F5:重新启动 28、Shift+F7:由代码窗体切换到对应的窗体设计界面 29、Shift+F8:逐过程单步执行。按过程进行调试 30、Shift+F9:快速监视 31、Shift+Tab:让选中的代码集体凸出

计算机基础(键盘鼠标操作).doc

Windows XP的基本操作 教学课题:键盘的基本功能和输入规则 教学目的:1.认识键盘上常用键并会运用 2.启动与关闭计算机 3.掌握键盘和鼠标的使用方法 教学重点:1.启动与关闭计算机的方法 2.鼠标的使用方法 教学难点:鼠标的使用 教学方法:讲授法、演示、多媒体演示 教学时数:2课时 教学过程: 一、清点人数 班级:应到:实到:请假: 班级:应到:实到:请假: 二、安全提示 三、讲授新课 (一)键盘手指分布图 (二)键盘与鼠标的使用 1. 键盘的使用 标准的计算机键盘主要由字符键区、功能键区、方向键区、小键盘区和辅助键区组成。

(1)字符键区: Tab键:跳格键,在表格中按Tab键,可以使光标沿单元格往前(右)一步一步地跳动。按“Shift+Tab”组合键则反向跳动;按“Ctrl+Tab”是复原。 Caps Lock键:大写锁定键。 Shift键:上档键,又称转换键。用以配合有上符的键盘输入上符键盘上的符号,还可以配合其他的键共同起作用,例如,Shift+F3是大小写转换;Shift+F5 是使光标回到此前状态;按住Shift键拖文本时是移动所选的文本;放光碟时,连按数下shift 键,可以跳过自动播放;删除文件时,按shift 键可以不经过回收站直接删除。。按shift +F10可以代替鼠标右键;shift+空格,输入法全/半角切换等。 Ctrl键:控制键。需要配合其他键或鼠标使用。有多种功能。例如Ctrl+s是保存文件;Ctrl+V是粘贴;Ctrl+A是全选;Ctrl+=是把锁选定的字变为下标字;Ctrl+C是调出保存24条信息的剪贴板;按住Ctrl键拖动选定的文本时是复制等。 Alt键:可选键。它需要和其他键配合使用来达到某一操作目的。例如,若同时按住Alt+ Ctrl+Del,是打开Windows的任务管理器。 Enter键:回车键,也称确认键。 Space键:空格键。按一下空格键,就会输入一个空格,光标也就向右移动一个字符。 Backspace键:后退格键。可以删除当前光标位置前的字符,并将光标向左移动一个位置。如果按Shift+Backspace键,就是删除整个表格。 (2)功能键区 Esc键:一般起退出或中止某个程序或某种操作的作用。 F1键:在Word中按F1可以得到“Wo rd帮助”。 F2键:在Word中,如果你选定了一组文本或图形,随后再按一下F2键,你想把这组文本或图形移到本文档的哪个位置,就把光标转移到哪里,再按一下Enter 键,移动就成功了。 F3键:在桌面或文件夹中按F3是打开“搜索文件和文件夹”的窗口。 F4键:在Word中,是重复上一次操作。如果你按组合键“Alt+F4”,就是关闭这个窗口。 F5键:在Word中,按F5可以调出“查找、替换和定位”对话框;在Web页面,F5键用来刷新IE或资源管理器中当前所在窗口的内容,Ctrl+F5是强制刷新。 F6键:在Word中,用它来撤消F8的扩展选择功能。 F7键:在Word中,按F7可以出现拼写和错误提示窗口。

VB 有关鼠标的操作

VB 有关鼠标的操作   假如没有鼠标,电脑的普及率绝对没有目前这么高。在windows下,鼠标的作用不亚于键盘。因此,在VB中设计基于windows下的应用程序,鼠标的操作和设计是非常重要的。 一、鼠标的移动、按键事件 要想在VB程序中自如应用鼠标,先要了解有关鼠标的事件,并学会如何编写这些事件过程。最常见的鼠标事件有: 当在某个对象上移动鼠标、按下鼠标按键、释放鼠标按键时均会触发鼠标事件,它们分别是:MouseMove、MouseDown、MouseUp。   这三个鼠标事件过程均会返回四个参数:Button As Integer, Shift As

具体解释如下: 1、 MouseDown事件 当单击鼠标上的任何一个按键之后,都会引起MouseDown事件。许多对象都有这个事件。如用鼠标在窗体上单击,可以引发这个事件,用鼠标单击“按钮”“标签”“文本框”等对象也可以引发这个事件。该事件还带回来不少参数,下面是鼠标单击窗体任何位置所引发的MouseDown事件,单击其它对象所带回的参数与此相同: Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Integer,Y As Integer)   End Sub 其中: (1)、Button参数 Button参数带回来的信息是用户按了鼠标上的哪能一个键,左键?右键?还是中间键? Button=1,说明用户按的是鼠标的左键; Button=2,说明用户按的是鼠标的右键; Button=4,说明用户按的是鼠标的中间键;   (2)、Shift参数 Shift参数带回来的是用户按鼠标按键时是否同时按下了键盘上的Shift、Ctrl、Alt键。 Shift=1,说明用户在按下鼠标按键的同时,还按下了键盘上的Shift键;Shift=2,说明用户在按下鼠标按键的同时,还按下了键盘上的Ctrl键;

第三章常见的鼠标键盘交互方法

TrackBall模式 Trackball模式是跟踪球模式,具体来说,就是物体的中心位置不变,而改变视点的位置,从而使模型随着鼠标的移动绕着中心位置旋转。 对于鼠标移动需要计算相应的视点(照相机)的运动情况,在osg中,通过TrackballManipulator::calcMovement()来实现,并且对于不同的鼠标事件,分别进行如下的操作: 1.按下鼠标的左键,则旋转照相机。 2.按下鼠标中间键或者同时按下鼠标的左键和与右键,则改变物体的中心位置,也即对物体进行平移操作。 3.按下鼠标的右键,则对模型进行缩放。 在按下鼠标的左键从而旋转照相机时,这里主要模拟了一个跟踪球技术,球的半径理想情况下应该基于旋转中心到鼠标所指的物体上某点的距离,但是为了简化处理,一般情况下,球的半径TRACKBALLSIZE可以预先给定,也能达到比较好的模拟效果。具体实现过程如下:首先分别记录两次鼠标事件的坐标的(x1,y1)和(x2,y2),根据x坐标的最小值X min和最大值X max,以及y坐标的最小值Y min和最大值Y max,对(x1,y1)和(x2,y2)坐标进行规范化,转化到(-1,1)之间,不妨假设新的坐标点为p1和p2,然后通过将p1和p2投影到跟踪球上,从而获取相应的z 坐标。这样,以球的中心为起始点,计算出的球上的两个点为终点,可以确定两个向量,不妨记作P1和P2,那么旋转轴axis = P2^ P1,旋转的弧度为:t = ||(P2- P1)|| / (2.0*TRACKBALLSIZE),为了避免产生某些不可操纵的结果,必须先将t规范到(-1,1)之间,再将其转化为角度angles,然后将照相机绕着axis旋转angles的角度,从而实现了对照相机的旋转操作。 在osg的实现中,该跟踪球并不是一个正规的球体,而是进行了一定的变形,在中心附近是一个半径为TRACKBALLSIZE的球体,而在离中心达到一定距离时(小于球的半径TRACKBALLSIZE),该球体被扭曲成了四个双曲面。 在Trackball模式的具体实现时,有许多细节问题,如 1.首先需要将世界坐标系转化到视点坐标系,这可以通过先将中心平移到视点后根据照相机的up、物体的中心以及视点重新确立坐标系。在osg中,由void TrackballManipulator::computePosition(const osg::Vec3& eye,const osg::Vec3& center,const osg::Vec3& up)实现。 2.模型的旋转通过鼠标控制,因此需要判断鼠标是否移动,具体实现时,可以预先自定义一个速率v,分别记录下连续两次鼠标事件的时间和位置,计算出间隔的时间?t和移动的距离?s,如果?s > v * ?t,就可以认为鼠标移动,并根据鼠标的具体事件(如按下的是左键、右键等)进行相应的操作。在osg中,由bool TrackballManipulator::isMouseMoving()实现。 3.需要有一个函数接收不同的鼠标和键盘事件,从而做出相应的处理。在osg中,由bool TrackballManipulator::handle(const GUIEventAdapter& ea,GUIActionAdapter& us)实现,如果事件被正确处理,返回true,否则返回false。其中GUIEventAdapter接受来自GUI的更新事件,GUIActionAdapter则是对这些GUI事件的回应。 Quaternion The quaternions are members of a noncommutative division algebra first invented by William Rowan Hamilton. The idea for quaternions occurred to him while he was walking along the Royal

vb 属性、方法和事件概述

Visual Basic 属性、方法和事件 属性、方法和事件概述 Visual Basic 的窗体和控件是具有自己的属性、方法和事件的对象。可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色。其它一些属性描述气球的状态(充气的或未充气的)或不可见的性质,如它的寿命。通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不同。 气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满气球的动作),放气方法(排出气球中的气体)和上升方法(放手让气球飞走)。所有的气球都具备这些能力。 气球还有预定义的对某些外部事件的响应。例如,气球对刺破它的事件响应是放气,对放手事件的响应是升空。 如果能对气球编程的话,Visual Basic 代码将如下所示。其作用是设置气球的属性: Balloon.Color = Red Balloon.Diameter = 10 Balloon.Inflated = True 注意代码的语法,首先是对象(Balloon),接着是属性(Color),然后是赋值(Red)。重复这条语句,但是,换一个不同的值,就可以改变气球的颜色。属性也可以在程序设计阶段在“属性”窗口中设置。 调用气球的方法是这样的: Balloon.Inflate Balloon.Deflate Balloon.Rise 5 它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动词)。在第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法有一个或多个参数,它们对执行的动作做进一步的描述。 气球对一个事件的响应如下所示: Sub Balloon_Puncture() Balloon.Deflate Balloon.MakeNoise "Bang" Balloon.Inflated = False

重装系统时USB接口鼠标和键盘不能使用的解决办法

重装系统时,U S B接口鼠标和键盘不能使用的解决办法现在的电脑基本都是USB接口的鼠标和键盘了。但是有的朋友想重装系统的时候,发现USB鼠标和键盘都不能用,安全模式也无法进入,按不了上面的选项,同时等那段时间过后自动进入系统后就可以用了,简直没办法重装系统了,这个是怎么回事呢? 这是因为你的键盘是USB插口的,因为没进入系统的时候USB还无法实现数据传输。建议使用普通的圆口的,如果没有圆口鼠标,就请重新设置bios里的USB选项把USB键盘功能功能打开.就可以了 开启USB鼠标键盘功能步骤如下: 重起电脑,按住DEL不放,进入蓝屏的bios设置页面,弹出菜单,这个是左边的一行: StandardCmosFeatures AdvancedBiosFeatures InTegratedperiphrels PowerManageMentSetup Pnp/PclContigurations OcHealthStatus 按键盘上的向上下左右小箭头“移动光标”位置,键盘最左上角的“Esc”菜单键是返回当进入Bios时的菜单,回车是“确定”,按F10保存退出,最后再按“Y”,也就是Yes,是的意思,再确定一下。请朋友们看准,不要胡乱改参数,这个设置是很简单的,不放心的朋友可以笔记一下。 进入InTegratedperiphrels(集成设备设定,选择ONBOARDDERIVE,再选择USBKEYBOARDSUPPOR设置为Enable即可。下面还有个MOUSESUPPOR,是USB鼠标的支持。 (转)另外关于U盘、USB鼠标、USB键盘,在进入安装界面后失效的问题(无论是否插在3.0都会失效),其根本原因是intelXHCI控制器的问题,intel的xhci控制器提供了一个smartauto功能,俗称“聪明”,但聪明过

VB模拟鼠标键盘动作

VB模拟鼠标键盘动作 有些时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件。那么我们怎样才能用VB来写一个程序,达到与按键精灵类似的功能呢?那就让我们来先了解一下windows 中响应键盘事件的机制。 当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就被传给系统。扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。这个过程可以简单的如下表示: 用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口 明白了这个过程,我们就可以编程实现在其中的某个环节来模拟键盘操作了。在VB中,有多种方法可以实现键盘模拟,我们就介绍几种比较典型的。 1.局部级模拟 从上面的流程可以看出,键盘事件是最终被送到活动窗口,然后才引起目标程序响应的。那么最直接的模拟方法就是:直接伪造一个键盘消息发给目标程序。哈哈,这实在是很简单,windows提供了几个这样的API函数可以实现直接向目标程序发送消息的功能,常用的有SendMessage和PostMessage,它们的区别是PostMessage函数直接把消息仍给目标程序就不管了,而SendMessage把消息发出去后,还要等待目标程序返回些什么东西才好。这里要注意的是,模拟键盘消息一定要用PostMessage函数才好,用SendMessage是不正确的(因为模拟键盘消息是不需要返回值的,不然目标程序会没反应),切记切记!PostMessage函数的VB声明如下: Declare Function PostMessage Lib"user32"Alias"PostMessageA"(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long 参数hwnd是你要发送消息的目标程序上某个控件的句柄,参数wMsg是消息的类型,表示你要发送什么样的消息,最后wParam和lParam这两个参数是随消

android详细解释键盘和鼠标事件

https://www.doczj.com/doc/4914905676.html,/jinhaijian/article/details/6013985 目的:通过全面的分析Android的鼠标和键盘事件。了解Android中如何接收和处理键盘和鼠标事件,以及如何用代码来产生事件。 主要学习内容: 1. 接收并处理鼠标事件:按下、弹起、移动、双击、长按、滑动、滚动 2. 接收并处理按键事件:按下、弹起 3. 模拟鼠标/按键事件 1. Android事件 现代的用户界面,都是以事件来驱动的来实现人机交换的,而Android上的一套UI控件,无非就是派发鼠标和键盘事件,然后每个控件收到相应的事件之后,做相应的处理。如Button 控件,就只需要处理Down、move、up这几个事件,Down的时候重绘控件,move的时候一般也需要重绘控件,当up的时候,重绘控件,然后产生onClick事件。在Android中通过实现OnClickListener接口的onClick方法来实现对Button控件的处理。 对于触摸屏事件(鼠标事件)有按下有:按下、弹起、移动、双击、长按、滑动、滚动。按下、弹起、移动(down、move、up)是简单的触摸屏事件,而双击、长按、滑动、滚动需要根据运动的轨迹来做识别的。在Android中有专门的类去识别,android.view.GestureDetector。 对于按键(keyevent),无非就是按下、弹起、长按等。 2. Android事件处理 Android手机的坐标系是以左上定点为原点坐标(0,0), 向右为X抽正方形,向下为Y抽正方向。 2.1 简单触摸屏事件 在Android中任何一个控件和Activity都是间接或者直接继承于android.view.View。一个View对象可以处理测距、布局、绘制、焦点变换、滚动条,以及触屏区域自己表现的按键

VB6全局键盘、鼠标钩子

VB: è????ü?ì?¢êó±ê13×ó '--------------------------------- 'Form '°2×°13×ó Private sub AddHook() '?ü?ì13×ó lHook(0) = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0) 'êó±ê13×ó lHook(1) = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0) End Sub 'D?13×ó Private sub DelHook() UnhookWindowsHookEx lHook(0) UnhookWindowsHookEx lHook(1) End Sub '--------------------------------- '?£?é Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long) Public Type KEYMSGS vKey As Long 'Dé?a?? (and &HFF) sKey As Long 'é¨?è?? flag As Long '?ü°′??£o128 ì§?e£o0 time As Long 'Window??DDê±?? End Type Public Type MOUSEMSGS X As Long 'x×ù±ê Y As Long 'y×ù±ê a As Long b As Long time As Long 'Window??DDê±?? End Type Public Type POINTAPI

相关主题
文本预览
相关文档 最新文档