Виртуальная клавиша Нажмите в окне C # - PullRequest
1 голос
/ 19 августа 2010

Эй, я пытаюсь напечатать сообщение в блокноте, не имея его в качестве окна фокусировки (Окно переднего плана).

Это то, что я имею до сих пор:

    const UInt32 WM_KEYDOWN = 0x0100;
    const int VK_F5 = 0x74;

    [DllImport("user32.dll")]
    static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
    [STAThread]

    private void button2_Click(object sender, EventArgs e)
    {
            Process[] processes = Process.GetProcessesByName("Notepad");

            foreach (Process proc in processes)
                PostMessage(proc.MainWindowHandle, VK_TAB, VK_S, 0);

    }

Но это не вводит S в блокнот. Когда я использую VK_F5, он отображает дату / время, а когда я использую VK_F1, который отображает окно справки, но не вводит s.

Я думал об использовании SendKey, но для этого нужно, чтобы я нацелился на Блокнот.

Любая помощь будет оценена.

Спасибо.

1 Ответ

1 голос
/ 19 августа 2010

если при использовании VK_F5 вставляется дата, это означает, что процедура отправки сообщения работает.

проблема заключается в месте назначения сообщения, вы отправляете сообщения на дескриптор окна блокнота,

если вы хотите, чтобы ключи были написаны в текстовой области, вам нужно получить дескриптор элемента управления текстовой области приложения блокнота и отправить ему сообщение

...