如何用代码向软件指定区域输入内容 - 使用 SendMessage 函数
如何用代码向软件中的指定区域输入内容:要通过代码向软件中的指定区域输入,你可以使用 SendMessage 函数来发送消息给目标窗口,以模拟键盘输入或鼠标操作。
以下是一个示例代码,演示如何使用 SendMessage 函数向指定的区域发送输入:
using System;
using System.Runtime.InteropServices;
using System.Threading;
class Program
{
// 导入 Windows API 函数
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr FindWindowEx(IntPtr hWndParent, IntPtr hWndChildAfter, string lpClassName, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
// 常量定义
private const int WM_SETTEXT = 0x000C;
private const int WM_KEYDOWN = 0x0100;
private const int WM_KEYUP = 0x0101;
static void Main(string[] args)
{
// 延迟一段时间,以便能够切换到目标窗口
Thread.Sleep(2000);
// 获取目标窗口的句柄
IntPtr targetWindowHandle = FindWindow(null, "目标窗口的标题"); // 替换为目标窗口的标题
if (targetWindowHandle != IntPtr.Zero)
{
// 发送输入到目标窗口
SendMessageExample(targetWindowHandle);
}
else
{
Console.WriteLine("未找到目标窗口!");
}
}
static void SendMessageExample(IntPtr targetWindowHandle)
{
// 示例 1:向目标窗口发送文本
string textToSend = 'Hello, World!';
IntPtr textPtr = Marshal.StringToHGlobalAuto(textToSend);
SendMessage(targetWindowHandle, WM_SETTEXT, IntPtr.Zero, textPtr);
// 示例 2:向目标窗口发送键盘按键
SendMessage(targetWindowHandle, WM_KEYDOWN, (IntPtr)0x41, IntPtr.Zero); // 模拟按下 A 键
SendMessage(targetWindowHandle, WM_KEYUP, (IntPtr)0x41, IntPtr.Zero); // 模拟释放 A 键
// 示例 3:向目标窗口发送鼠标点击
int x = 100; // 鼠标点击的 x 坐标
int y = 100; // 鼠标点击的 y 坐标
IntPtr lParam = (IntPtr)((y << 16) | (x & 0xFFFF)); // 构造 lParam 参数
SendMessage(targetWindowHandle, 0x0201, (IntPtr)0x0001, lParam); // 模拟鼠标左键按下
SendMessage(targetWindowHandle, 0x0202, (IntPtr)0x0001, lParam); // 模拟鼠标左键释放
}
}
在示例代码中,我们使用 FindWindow 函数找到目标窗口的句柄。然后,我们使用 SendMessage 函数向目标窗口发送消息。
示例代码中包含了三个示例:
-
示例 1:向目标窗口发送文本。我们使用
WM_SETTEXT消息来设置目标窗口的文本内容。 -
示例 2:向目标窗口发送键盘按键。我们使用
WM_KEYDOWN和WM_KEYUP消息来模拟按下和释放键盘按键。 -
示例 3:向目标窗口发送鼠标点击。我们使用
0x0201和0x0202消息来模拟鼠标左键按下和释放。
请根据你的需求进行修改,例如更改要发送的文本内容、键盘按键码或鼠标点击的坐标。
请确保你的应用程序具有足够的权限来操作目标窗口和发送消息。
原文地址: https://www.cveoy.top/t/topic/PWg 著作权归作者所有。请勿转载和采集!