0

我需要应用程序特定窗口的特定 wHnd(窗口句柄):Google Chrome/Firefox 网页文本(不是文本框)。ListBoxes 和系统树也不会使用正常调用返回(下面的代码片段)。另一个非常有用的特定于应用程序的窗口是 Visual Studios 代码窗口(不仅仅是代码窗口总是会帮助更多!!).. 感谢您的帮助。

using System.Runtime.InteropServices;

public static class WindowUtils {
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern IntPtr GetWindowThreadProcessId(
    IntPtr hWnd,
    IntPtr ProcessId);

[DllImport("user32.dll")]
static extern IntPtr AttachThreadInput(
    IntPtr idAttach, 
    IntPtr idAttachTo,
    bool fAttach);

[DllImport("user32.dll")]
static extern IntPtr GetFocus();

public IntPtr GetFocusedControl() {
    IntPtr activeWindowHandle = GetForegroundWindow();

    IntPtr activeWindowThread = 
        GetWindowThreadProcessId(activeWindowHandle, IntPtr.Zero);
    IntPtr thisWindowThread =
        GetWindowThreadProcessId(this.Handle, IntPtr.Zero);

    AttachThreadInput(activeWindowThread, thisWindowThread, true);
    IntPtr focusedControlHandle = GetFocus();
    AttachThreadInput(activeWindowThread, thisWindowThread, false);

    return focusedControlHandle;
}
}
4

0 回答 0