Наложение текста на чужое окно - HUD - PullRequest
3 голосов
/ 14 октября 2009

Я заинтересован в написании приложения, которое накладывает небольшой дисплей ( HUD ) поверх другого приложения в VB.NET. Что является примером этого?

Мне нужно будет перечислить все открытые окна, чтобы найти нужное окно, а затем наложить некоторый текст на определенную позицию в окне. Если пользователь перемещает это окно, мой текст должен следовать. (Я, вероятно, буду рисовать текст в цикле снова и снова).

Редактировать: никто не ответил на мой исходный запрос - я добавил C # к ключевым словам, чтобы посмотреть, есть ли ответ у любого из гуру на этом языке.

1 Ответ

4 голосов
/ 13 марта 2010

Вы можете использовать WinApi для перечисления окон. Вы можете начать поиск с помощью

[DllImport("user32.dll")]
public static extern int EnumWindows(EnumWindowsProc ewp, int lParam);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowRect(IntPtr hWnd, ref WapiRect lpRect);

Когда вы нашли свое окно и у него есть дескриптор, нет проблем построить на нем что-то вроде

Graphics g = Graphics.FromHwnd(win.Handle);
g.FillRectangle(new SolidBrush(Color.White), 0, 0, 1000, 1000);

Но для наложения ... Одно из возможных решений - создать собственную форму без рамки (ее можно сделать даже прозрачной) и разместить на ней свой текст. Затем просто поместите эту специальную форму поверх другого приложения.

...