要通过文本框前面的标签(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的内容" 替换为你要发送给相应文本框的实际内容。确保你的应用程序具有足够的权限来操作目标窗口、标签和文本框。

通过文本框前面的label分别填写不同内容的C#代码示例

原文地址: https://www.cveoy.top/t/topic/PT2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录