通过文本框前面的label分别填写不同内容的C#代码示例
要通过文本框前面的标签(Label)为不同的文本框填写不同的内容,你可以根据标签的文本内容来分辨每个标签对应的文本框,并使用 'SendMessage' 函数向相应的文本框发送消息。
以下是一个示例代码,演示如何根据标签的文本内容为不同的文本框填写不同的内容:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
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, int wParam, string lParam);
// 常量定义
private const int WM_SETTEXT = 0x000C;
static void Main(string[] args)
{
// 获取父窗口的句柄
IntPtr parentWindowHandle = FindWindow(null, "父窗口标题"); // 替换为父窗口的标题
if (parentWindowHandle != IntPtr.Zero)
{
// 获取标签的句柄
IntPtr label1Handle = FindWindowEx(parentWindowHandle, IntPtr.Zero, "Static", "标签1"); // 替换为标签1的文本内容
IntPtr label2Handle = FindWindowEx(parentWindowHandle, IntPtr.Zero, "Static", "标签2"); // 替换为标签2的文本内容
if (label1Handle != IntPtr.Zero && label2Handle != IntPtr.Zero)
{
// 获取文本框的句柄
IntPtr textBox1Handle = FindWindowEx(parentWindowHandle, IntPtr.Zero, "Edit", null); // 替换为文本框1的类名
IntPtr textBox2Handle = FindWindowEx(parentWindowHandle, IntPtr.Zero, "Edit", null); // 替换为文本框2的类名
if (textBox1Handle != IntPtr.Zero && textBox2Handle != IntPtr.Zero)
{
// 获取标签1的文本内容
string label1Text = GetWindowText(label1Handle);
// 获取标签2的文本内容
string label2Text = GetWindowText(label2Handle);
// 填写文本框1的内容
if (label1Text == "标签1")
{
SendMessage(textBox1Handle, WM_SETTEXT, 0, "文本框1的内容");
}
// 填写文本框2的内容
if (label2Text == "标签2")
{
SendMessage(textBox2Handle, WM_SETTEXT, 0, "文本框2的内容");
}
}
else
{
Console.WriteLine("未找到文本框!");
}
}
else
{
Console.WriteLine("未找到标签!");
}
}
else
{
Console.WriteLine("未找到父窗口!");
}
}
static string GetWindowText(IntPtr hWnd)
{
// 获取窗口文本长度
int length = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, null);
// 创建缓冲区
StringBuilder sb = new StringBuilder(length + 1);
// 获取窗口文本
SendMessage(hWnd, WM_GETTEXT, sb.Capacity, sb);
return sb.ToString();
}
}
在示例代码中,我们首先使用 'FindWindow' 函数获取父窗口的句柄。然后,通过调用 'FindWindowEx' 函数,我们获取了两个标签和两个文本框的句柄。
接下来,我们使用 'GetWindowText' 方法获取每个标签的文本内容,并使用 'SendMessage' 函数向相应的文本框发送 'WM_SETTEXT' 消息来设置其内容。
请将示例代码中的 "父窗口标题" 替换为你要找到的父窗口的实际标题,同时将 "标签1"、"标签2" 替换为你要查找的标签的实际文本内容,将 "文本框1的内容"、"文本框2的内容" 替换为你要发送给相应文本框的实际内容。确保你的应用程序具有足够的权限来操作目标窗口、标签和文本框。
原文地址: https://www.cveoy.top/t/topic/PT2 著作权归作者所有。请勿转载和采集!