SendKeys для конкретного процесса, похоже, не работает

У меня есть консоль, которая запускает экземпляр uTorrent с определенным магнитом. Сейчас я пытаюсь заставить консоль нажать кнопку OK (отправив клавишу ВВОД) во дополнительное всплывающее окно uTorrent, где можно нажать кнопку ОК, чтобы начать загрузку, но это не похоже на работу.

Иногда я получаю исключение, когда второй процесс (из всплывающего окна) не найден, но когда нет, он все равно не запускает загрузку.

Что может быть причиной этого?

Код:

const UInt32 WM_KEYDOWN = 0x0100;
const int VK_RETURN = 0x0D;

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

static void Main(string[] args)
{
    Process.Start("magnet:?...");
    Process[] processes = Process.GetProcessesByName("uTorrent");
    if (processes.Any())
    {
        Process mainWindow = processes[0];
        mainWindow.WaitForInputIdle();
        Process popup = processes[1];
        if (PostMessage(popup.MainWindowHandle, WM_KEYDOWN, VK_RETURN, 0))
        {
            Debug.WriteLine("Done");
        }

        Thread.Sleep(5000);
    }
}

0 ответов

Другие вопросы по тегам