c#关于键盘鼠标控制的老的技术,怕我忘了,呵呵 (4)

2009年4月27日星期一

c#关于键盘鼠标控制的老的技术,怕我忘了,呵呵 (4)



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()


<STAThread()> _

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 <System.Drawing.dll>

#using
<System.Windows.Forms.dll>

#using <System.dll>


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("=");

}


0 评论:

发表评论