using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
//验证当前窗体是一个正在运行的
if (calculatorHandle == IntPtr.Zero)
{
MessageBox.Show("Calculator is not running.");
return;
}
执行左键按下
//mouse_event(MouseEventFlag.LeftDown, 775, 1173, 0, UIntPtr.Zero);
执行左键松开
//mouse_event(MouseEventFlag.LeftUp, 775, 1173, 0, UIntPtr.Zero);
//获得焦点
uint WM_SETFOCUS = 0x07;
SendMessage(calculatorHandle, WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);
//找子窗口
IntPtr aa = FindWindowEx(calculatorHandle, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr bb = FindWindowEx(aa, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr cc = FindWindowEx(bb, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr c1 = FindWindowEx(bb, cc, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr c2 = FindWindowEx(bb, c1, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr c3 = FindWindowEx(bb, c2, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr dd = FindWindowEx(bb, c3, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr ee = FindWindowEx(dd, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr ff = FindWindowEx(ee, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr gg = FindWindowEx(ff, IntPtr.Zero, "Shell Embedding", null);
IntPtr hh = FindWindowEx(gg, IntPtr.Zero, "Shell DocObject View", null);
IntPtr ii = FindWindowEx(hh, IntPtr.Zero, "Internet Explorer_Server", null);
// Make Calculator the foreground application and send it
// a set of calculations.
SetForegroundWindow(ii);
SendKeys.SendWait("做实验-0-");
SendKeys.SendWait("^{ENTER}");
}
//得到一个应用程序窗口的句柄.
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
// 激活应用程序窗口.
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
//[DllImport("user32.dll")]
//static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
//SendMessage的三个参数意思分别为
//参数1:接收消息的控件的句柄
//参数2:消息类型 比如WM_LBUTTONDOWN
//参数3:消息的附加信息 比如要传递一些文字啊.或者坐标信息
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, int hwndChildAfter, string lpszClass, string lpszWindow);
//[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
//}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//类名,标题名 这些参数可以通过vs的工具spy++来找
IntPtr calculatorHandle = FindWindow("WindowsForms10.Window.8.app.0.33c0d9d", "翟光磊");//验证当前窗体是一个正在运行的
if (calculatorHandle == IntPtr.Zero)
{
MessageBox.Show("Calculator is not running.");
return;
}
执行左键按下
//mouse_event(MouseEventFlag.LeftDown, 775, 1173, 0, UIntPtr.Zero);
执行左键松开
//mouse_event(MouseEventFlag.LeftUp, 775, 1173, 0, UIntPtr.Zero);
//获得焦点
uint WM_SETFOCUS = 0x07;
SendMessage(calculatorHandle, WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);
//找子窗口
IntPtr aa = FindWindowEx(calculatorHandle, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr bb = FindWindowEx(aa, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr cc = FindWindowEx(bb, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr c1 = FindWindowEx(bb, cc, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr c2 = FindWindowEx(bb, c1, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr c3 = FindWindowEx(bb, c2, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr dd = FindWindowEx(bb, c3, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr ee = FindWindowEx(dd, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr ff = FindWindowEx(ee, IntPtr.Zero, "WindowsForms10.Window.8.app.0.33c0d9d", null);
IntPtr gg = FindWindowEx(ff, IntPtr.Zero, "Shell Embedding", null);
IntPtr hh = FindWindowEx(gg, IntPtr.Zero, "Shell DocObject View", null);
IntPtr ii = FindWindowEx(hh, IntPtr.Zero, "Internet Explorer_Server", null);
// Make Calculator the foreground application and send it
// a set of calculations.
SetForegroundWindow(ii);
SendKeys.SendWait("做实验-0-");
SendKeys.SendWait("^{ENTER}");
}
//得到一个应用程序窗口的句柄.
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
// 激活应用程序窗口.
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
//[DllImport("user32.dll")]
//static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);
//SendMessage的三个参数意思分别为
//参数1:接收消息的控件的句柄
//参数2:消息类型 比如WM_LBUTTONDOWN
//参数3:消息的附加信息 比如要传递一些文字啊.或者坐标信息
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, int hwndChildAfter, string lpszClass, string lpszWindow);
//[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
//}
}
}