温馨提示×

怎样设置C# FindWindow的查找选项

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

在C#中,FindWindow函数用于查找具有指定窗口类名或窗口标题的顶级窗口

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll", SetLastError = true)]
static extern bool SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong);

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindowLongPtr(IntPtr hWnd, int nIndex);

const int GWL_EXSTYLE = -20;
const int WS_EX_NOACTIVATE = 0x08000000;

public static IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow)
{
    return FindWindowEx(hwndParent, hwndChildAfter, lpszClass, lpszWindow);
}

要设置FindWindow的查找选项,您可以使用SetWindowLongPtr函数来修改窗口样式。例如,如果您想要查找一个不可激活的窗口,可以使用以下代码:

IntPtr hwnd = FindWindow("ClassName", "WindowTitle");
if (hwnd != IntPtr.Zero)
{
    // 设置窗口样式为不可激活
    SetWindowLongPtr(hwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE);
}

请注意,您需要根据实际情况替换"ClassName""WindowTitle"为您要查找的窗口的类名和窗口标题。

0