在软件开发中,获取子窗口的所有标题通常涉及到多线程编程和窗口句柄的操作。以下是一个基于Windows平台使用C#语言的示例代码,展示如何获取一个进程下所有子窗口的标题。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
class Program
{
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
static void Main()
{
Process process = Process.GetProcessesByName("TargetProcessName")[0]; // 替换为目标进程名
IntPtr mainWindowHandle = process.MainWindowHandle;
List<string> windowTitles = new List<string>();
EnumChildWindows(mainWindowHandle, (hWnd, lParam) =>
{
StringBuilder title = new StringBuilder(256);
GetWindowText(hWnd, title, title.Capacity);
windowTitles.Add(title.ToString());
return true;
}, IntPtr.Zero);
foreach (var title in windowTitles)
{
Console.WriteLine(title);
}
}
private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
}
通过上述方法,可以有效地获取子窗口的所有标题,适用于多种开发和测试场景。
领取专属 10元无门槛券
手把手带您无忧上云