温馨提示×

C# FindWindow能查找隐藏窗口吗

c#
小樊
81
2024-11-19 14:25:44
栏目: 编程语言

FindWindow 函数是 Windows API 中的一个函数,用于根据窗口类名或窗口标题查找窗口。然而,FindWindow 函数并不能直接查找隐藏的窗口。

如果你想查找隐藏的窗口,可以使用 EnumWindows 函数枚举所有窗口,然后使用 IsWindowVisible 函数检查窗口是否可见。这是一个示例代码:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("user32.dll")]
    static extern bool EnumWindows(EnumWindowsDelegate lpEnumFunc, IntPtr lParam);

    [DllImport("user32.dll")]
    static extern bool IsWindowVisible(IntPtr hWnd);

    [UnmanagedFunctionPointer(CallingConvention.StdCall)]
    delegate bool EnumWindowsDelegate(IntPtr hWnd, IntPtr lParam);

    static void Main()
    {
        EnumWindows(EnumWindowsCallback, IntPtr.Zero);
    }

    static bool EnumWindowsCallback(IntPtr hWnd, IntPtr lParam)
    {
        if (IsWindowVisible(hWnd))
        {
            Console.WriteLine("Found visible window: " + new IntPtr(hWnd).ToString("X"));
        }

        return true;
    }
}

这个示例代码会枚举所有可见的窗口并将其标题输出到控制台。请注意,这个方法只能查找可见的窗口,如果你想查找隐藏的窗口,你需要使用其他方法,例如监听窗口消息或使用钩子。

0