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

C# 通过c查找用户选择的窗口的hwnd#,c#,parameters,window,hwnd,C#,Parameters,Window,Hwnd,我已经编写了一个c程序,可以通过编程方式再现键盘笔划。我的想法是将这些键盘笔划传递给另一个可能设置了文本框的应用程序 因此,在我的程序中,我希望用户选择我必须将键盘笔划重定向到的窗口。为此,我想知道一种可以等待的方法,让用户选择键盘笔划必须发送到的窗口,然后用户在我的应用程序上单击ok进行确认,然后我的应用程序通过获取其hwnd来知道我必须控制的窗口 我如何才能做到这一点?这其中有两个疑问:-1)它将如何等待用户选择活动窗口?它不会让控制台始终成为主窗口吗?2) GetWindowText是Wi

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

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


我如何才能做到这一点?

这其中有两个疑问:-1)它将如何等待用户选择活动窗口?它不会让控制台始终成为主窗口吗?2) GetWindowText是Win32 API调用吗?如果是这样,它如何接受stringbuilder,这是一个.NET类。这只是一个使用user32.dll获取前景窗口的示例。剩下的部分很简单——向用户显示一条消息,并启动后台工作程序,它将监视哪个应用程序在上面,如果它已经被更改了,可以用它做任何你想做的事情。
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());
        }
    }
}