найти hwnd окна, которое выбирает пользователь, через c # - PullRequest
1 голос
/ 03 апреля 2009

Я написал программу на c #, которая программно воспроизводит нажатия клавиш. Моя идея состояла в том, чтобы передать эти нажатия клавиш другому приложению, для которого может быть установлено текстовое поле.

Итак, в моей программе я хочу, чтобы пользователь выбрал окно, в которое я должен перенаправить нажатия клавиш. Для этого я хочу знать метод, в котором я могу ждать, позволить пользователю выбрать окно, в которое должны быть отправлены нажатия клавиш, а затем пользователь нажимает кнопку «ОК» в моем приложении, чтобы подтвердить, и затем мое приложение знает, какое окно я должен контроль путем получения его HWND.

Как я могу это сделать?

1 Ответ

2 голосов
/ 03 апреля 2009
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());
        }
    }
}
...