在 Windows 应用程序中,'Edit' 通常表示可编辑文本框的类名。如果你想获取多个类名为 'Edit' 的可编辑文本框的句柄,你可以使用 FindWindowEx 函数的 hWndChildAfter 参数来确定搜索的起始位置。可以通过将 hWndChildAfter 参数设置为当前已找到的文本框句柄,从而继续搜索下一个匹配的文本框。

以下是一个示例代码,演示如何获取多个类名为 'Edit' 的可编辑文本框的句柄:

using System;
using System.Runtime.InteropServices;

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

    static void Main(string[] args)
    {
        // 获取父窗口的句柄
        IntPtr parentWindowHandle = FindWindow(null, "父窗口标题"); // 替换为父窗口的标题

        if (parentWindowHandle != IntPtr.Zero)
        {
            // 获取第一个文本框的句柄
            IntPtr textBoxHandle = FindWindowEx(parentWindowHandle, IntPtr.Zero, "Edit", null); // 替换为文本框的类名

            while (textBoxHandle != IntPtr.Zero)
            {
                // 处理文本框,例如设置文本内容、获取文本内容等
                // ...

                // 获取下一个文本框的句柄
                textBoxHandle = FindWindowEx(parentWindowHandle, textBoxHandle, "Edit", null); // 替换为文本框的类名
            }
        }
        else
        {
            Console.WriteLine("未找到父窗口!");
        }
    }
}

在示例代码中,我们首先获取父窗口的句柄。然后,使用 FindWindowEx 函数来获取第一个类名为 'Edit' 的文本框的句柄。

在一个循环中,我们处理当前找到的文本框(例如设置文本内容、获取文本内容等),然后使用 FindWindowEx 函数并将上一个文本框的句柄作为 hWndChildAfter 参数,来获取下一个类名为 'Edit' 的文本框的句柄。循环会一直执行,直到没有更多匹配的文本框。

请确保将示例代码中的 '父窗口标题' 替换为你要找到的父窗口的实际标题,'Edit' 替换为你要查找的文本框的实际类名。确保你的应用程序具有足够的权限来操作目标窗口和文本框。

C# 使用 FindWindowEx 获取多个类名为 'Edit' 的文本框

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

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