Вы можете использовать Win32 API FindWindow
или FindWindowEx , чтобы найти дескриптор окна открытого браузера, а затем просто вызвать SendMessage с WM_KEYDOWN .Обычно проще всего передать заголовок окна на FindWindowEx
и найти для него соответствующий дескриптор окна.
Если вы запускаете процесс браузера самостоятельно с помощью объекта Process process
, тогда вы можете использовать process.MainWindowHandle
вместо вызова FindWindowEx
.
Spy ++ - очень полезный инструмент, когда вы хотите начать работать с другими окнами.Это в основном позволяет вам изучить иерархию элементов пользовательского интерфейса другой программы.Вы также можете отслеживать все сообщения, которые появляются в окне, которое вы отслеживаете.У меня есть дополнительная информация в этой теме .
Клавиша F5 имеет следующий код виртуальной клавиши:
const int VK_F5 = 0x74;
Подпись p / invoke для FindWindowEx
в C # -:
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
Вы можете p / вызывать (вводить) Win32 API SendMessage
следующим образом:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
Итак, скажем, вы вызываете FindWindowEx
прямо из вашего C #код после того, как приведенный выше код где-то внутри вашего класса.FindWindowEx
вернет дескриптор окна.Затем, когда у вас есть дескриптор окна, вы можете отправить любое нажатие клавиши в окно или вызвать множество других вызовов Win32 API для дескриптора окна.Или даже найдите дочернее окно, используя другой вызов FindWindowEx
.Например, вы можете выбрать даже элемент управления редактирования браузера, а затем изменить его текст.
Если все остальное идет не так и вы думаете, что отправляете правильный ключ в окно, вы можете использовать spy++
, чтобы увидеть, какие сообщения отправляются окну, когда вы вручную устанавливаете фокус на браузер и вручнуюнажмите F5
.