通过c#找到用户选择的窗口的hwnd

时间:2009-04-03 09:49:04

标签: c# parameters window hwnd

我编写了一个以编程方式再现键盘笔划的c#程序。我的想法是将这些键盘笔划传递给另一个可能将文本框设置为焦点的应用程序。

所以在我的程序中,我希望用户选择我必须将键盘笔划重定向到的窗口。为此,我想知道一个方法,我可以等待,让用户选择必须发送键盘笔划的窗口,然后用户在我的应用程序上单击确定以确认,然后我的应用程序知道哪个窗口我必须通过获得它来控制。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;

public class MainClass

    // Declare external functions.
    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();

    [DllImport("user32.dll")]
    private static extern int GetWindowText(IntPtr hWnd,
                                            StringBuilder text,
                                            int count);

    public static void Main() {
        int chars = 256;
        StringBuilder buff = new StringBuilder(chars);

        // Obtain the handle of the active window.
        IntPtr handle = GetForegroundWindow();

        // Update the controls.
        if (GetWindowText(handle, buff, chars) > 0)
        {
            Console.WriteLine(buff.ToString());
            Console.WriteLine(handle.ToString());
        }
    }
}