Отправка события мыши в неактивное окно
Здравствуйте, это Изабель Гарсия из Барселоны, и я нахожу некоторые проблемы с методом PostMessage для отправки события мыши в веб-браузер.
public void onClick2() { Process[] notepads = Process.GetProcessesByName("chrome"); if (notepads.Length == 0) return; if (notepads[0] != null) { UnityEngine.Debug.Log("Encontrado"); hWnd = FindWindowEx(notepads[0].MainWindowHandle, new IntPtr(0), "Edit", null); PostMessage(hWnd, MOUSEEVENTF_RIGHTDOWN, VK_RETURN, 0x001C0001); PostMessage(hWnd, MOUSEEVENTF_RIGHTDOWN, VK_DOWN, 0x00500001); } }
Кнопка, на которую я должен нажать, имеет уникальный идентификатор:
<a href="#" id="action-button" title="Share on WhatsApp" class="button button--simple button--primary">Send</a>
И я хотел бы получить доступ к этому удостоверению личности. Используя Spy++, я не могу получить доступ к этой кнопке.
Что я уже пробовал:
Я использовал SendKeys, но он работал с приложением Notepad.
Я использовал Spy++, но безуспешно с веб-страницей chrome.
Я перфом мыши, выполнив следующие действия:
private const uint MOUSEEVENTF_MOVE = 0x0001; private const uint MOUSEEVENTF_LEFTDOWN = 0x0002; private const uint MOUSEEVENTF_LEFTUP = 0x0004; private const uint MOUSEEVENTF_RIGHTDOWN = 0x0008; private const uint MOUSEEVENTF_RIGHTUP = 0x0010; private const uint MOUSEEVENTF_ABSOLUTE = 0x8000; public void performClick(uint x, uint y) { //SetCursorPos(x, y); mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, x, y, 0, UIntPtr.Zero); Thread.Sleep(200); mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, x, y, 0, UIntPtr.Zero); UnityEngine.Debug.Log("performClick x: " + x + "y: "+ y); //PostMessage(handle, MOUSEEVENTF_LEFTDOWN, 5, 5); https://stackoverflow.com/questions/409886/send-key-strokes-to-games-using-direct-input/50855426#50855426 }
Gerry Schmitz
Вы используете "управление браузером"? Если нет, то почему? Если вы это сделаете, то сможете получить доступ к DOM.
Richard Deeming
Если вы пытаетесь автоматизировать веб-браузер, почему бы не использовать инструмент, специально созданный для этого?
Selenium - Автоматизация Веб-Браузера[^]
Шпион и PostMessage
будут нацелены только те элементы управления, которые имеют свой собственный дескриптор окна. Браузеры не создают отдельный дескриптор окна для каждого элемента на странице. Если бы они это сделали, производительность и использование памяти были бы ужасающими.