Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Полный контроль над другими приложениями из формы WPF

#c_sharp #wpf #winapi #unity3d #render


Здравствуйте!
Хотел узнать у опытных программистов: возможно ли выполнять отрисовку окна другого
приложения и перенаправлять ввод-вывод из своего приложения в это приложение?

Т.е. я бы хотел, чтобы внутри моего приложения WPF был некоторый Image, в котором
бы отрисовывалось окно сторонней программы, если содержимое этого окна изменяется,
то Image перерисовывает окно. При этом, если был клик по Image в какой-либо точке,
то для этого стороннего окна происходит событие клика в той точке, которую я кликнул
на картинке.

Возможно ли реализовать это с помощью WinAPI и в каком направлении следует искать
решение данной проблемы?

Заранее благодарен,
proggamer12

Например, как реализована данная программа: http://store.steampowered.com/app/382110/
    


Ответы

Ответ 1



Ну если в лоб, то можно найти окно интересующей программы и получить окно "цель" [DllImport("user32.Dll")] public static extern int FindWindow (string lpClassName, string lpWindowName); Получить область этого окна [DllImport("user32.dll")] public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle); затем запустить таймер сканирующий область этого окна и при изменениях, перерисовывать это в своем Image. Что касается кликов, так как у вас есть дубликат координат этого окна, то можно транспонировать координаты для окна "цели" и через WinApi вызвать клик мыши по координатам. [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

Комментариев нет:

Отправить комментарий