Автоматизация управления веб-браузером .NET

Я пытаюсь автоматизировать некоторые вещи во флеш-игре, работающей в элементе управления веб-браузером в моей программе на С#. Используя dll sendmessage пользователя user32, я смог щелкнуть координаты на обычных страницах, таких как Google, но это не работает с флэш-контентом. Любые способы, которыми я могу это сделать? Также он не может быть обнаружен во флеш-игре. У меня есть рабочий в autoit, но я хотел бы переписать его на С# и заставить его работать в минимизированном виде.


person Jean-Bernard Pellerin    schedule 09.05.2009    source источник
comment
lancelarsen.com/Blog/tabid/ 72/EntryId/48/ Это было на самом деле полезнее, чем ответ, который я принял   -  person Jean-Bernard Pellerin    schedule 13.05.2009
comment
Архивная версия уже мертвой ссылки @Jean-BernardPellerin: https://web.archive.org/web/20110311200800/http://www.lancelarsen.com/Blog/tabid/72/EntryId/48/AutoIt-C-Helper-Library.aspx   -  person TylerH    schedule 21.01.2016


Ответы (2)


Почему бы просто не вызвать скрипт Autoit/Autohotkey из программы на C# с помощью класса System.Diagnostics.Process?

ProcessStartInfo psi = new ProcessStartInfo("your_script.ahk");
psi.CreateNoWindow = true;

Process procScript = Process.Start(psi);
procScript.WaitForExit();

Обратите внимание на CreateNoWindow=true, чтобы убедиться, что он работает скрыто, и на WaitForExit(), чтобы ваш код ждал возврата процесса.

AutoIt и AutoHotkey имеют несколько очень мощных команд автоматизации, которые совершенствовались годами. Очень сложно воспроизвести подобную функциональность C#/.NET, которая столь же надежна, поверьте мне, я пытался.

person Ash    schedule 09.05.2009

Использование SendMessage или PostMessage будет работать. Вам нужно отправить 3 сообщения, WM_MOUSEMOVE, затем WM_MOUSEDOWN, затем WM_MOUSEUP. WM_MOUSEMOVE должен указывать местоположение, отличное от WM_MOUSEDOWN и WM_MOUSEUP. WM_MOUSEDOWN и WM_MOUSEUP должны находиться в одном месте. Работает на меня.

person Eyal    schedule 13.12.2009