Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Текст на экран в 3D приложении

Ответить
Настройки темы
Текст на экран в 3D приложении

Аватара для ven00m

Пользователь


Сообщения: 76
Благодарности: 12

Профиль | Отправить PM | Цитировать


Есть ли способ вывести текст на экран при запущенном полноэкранном 3D приложении типо как FPSы во FRAPS ну или еще какнибуть?

Отправлено: 16:39, 16-08-2009

 

Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


_WinAPI_DrawText тебе в помощь
Код: Выделить весь код
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <FontConstants.au3>

Global $tRECT, $hFont, $hOldFont, $hDC

HotKeySet("{ESC}", "_Exit")

$tRECT = DllStructCreate($tagRect)
DllStructSetData($tRECT, "Left", 5)
DllStructSetData($tRECT, "Top", 5)
DllStructSetData($tRECT, "Right", 250)
DllStructSetData($tRECT, "Bottom", 50)

$hDC = _WinAPI_GetDC(0)
$hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
        $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
$hOldFont = _WinAPI_SelectObject($hDC, $hFont)

_WinAPI_SetTextColor($hDC, 0x0000FF)
_WinAPI_SetBkColor($hDC, 0x000000)
; comment next line to get black background instead of transparent one
_WinAPI_SetBkMode($hDC, $TRANSPARENT)

While 1
    _WinAPI_DrawText($hDC, "Hello world!", $tRECT, $DT_CENTER)
    Sleep(100)
WEnd

Func _Exit()
    _WinAPI_SelectObject($hDC, $hOldFont)
    _WinAPI_DeleteObject($hFont)
    _WinAPI_ReleaseDC(0, $hDC)
    _WinAPI_InvalidateRect(0, 0)
    $tRECT = 0
    Exit
EndFunc   ;==>_Exit

Отправлено: 19:22, 16-08-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ven00m

Пользователь


Сообщения: 76
Благодарности: 12

Профиль | Отправить PM | Цитировать


Спасибо за идею. Но у нее есть большой недостаток, надпись моргает при обновлении экрана, а в игре постояно.

Отправлено: 20:12, 16-08-2009 | #3


Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


Ну тогда создай гуи, присвой ему статус allways on top, убери фон и сделай видимым лейбл в котором будет отражаться нужный тебе текст.

Отправлено: 15:59, 17-08-2009 | #4


Пользователь


Сообщения: 135
Благодарности: 32

Профиль | Отправить PM | Цитировать


Цитата Belfigor:
создай гуи, присвой ему статус allways on top »
Вы сами проверили то что предлагаете? - Окно игры, в любом случае перекроет окно созданного Gui.

ven00m, Рискну предположить что для корректного решения этой задачи, необходимо перехватывать обращения игры к DirectX (d3d9.dll) и затем производить отрисовку текста в функции обратного вызова(Callback). Как это сделать, я к сожалению не знаю.

Отправлено: 17:48, 17-08-2009 | #5


Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


Смотря что за игра, думаю не трудно догодаться что ето онлайн игра, а большинство нынешних онлайн игр имею опцию запуска в режиме окна на весь монитор. Тоесть можно хоть фильм параллельно при развернутой на весь экран игре смотреть если задать окну проигрывателя атрибут allways on top.

Отправлено: 23:47, 17-08-2009 | #6


Аватара для Nik_rus

Пользователь


Сообщения: 92
Благодарности: 8

Профиль | Отправить PM | Цитировать


На самом деле если игра основана на DirectX, то легче провести инъекцию библиотеки, т.е. на приплюснутом си.
Хотя можете на форуме посмотреть инъекцию dll в автоите, попробуйте

-------
Бу! Мерзкий любитель кенгуру!


Отправлено: 11:00, 18-08-2009 | #7


Аватара для ven00m

Пользователь


Сообщения: 76
Благодарности: 12

Профиль | Отправить PM | Цитировать


Цитата Belfigor:
Смотря что за игра, думаю не трудно догодаться что ето онлайн игра, а большинство нынешних онлайн игр имею опцию запуска в режиме окна на весь монитор. Тоесть можно хоть фильм параллельно при развернутой на весь экран игре смотреть если задать окну проигрывателя атрибут allways on top. »
Неа, режим окна мне не подходит тк может случайно сбится фокус.
Цитата Nik_rus:
На самом деле если игра основана на DirectX, то легче провести инъекцию библиотеки, т.е. на приплюснутом си.
Хотя можете на форуме посмотреть инъекцию dll в автоите, попробуйте »
Нашел на офф форуме пример хука на messagebox там подменяются входящие данные, но в данном случае придется отрисовывать текст уже после того как функция отработает. Это вообще возможно? Можт я что то не понимаю.

Отправлено: 16:45, 18-08-2009 | #8


Аватара для Nik_rus

Пользователь


Сообщения: 92
Благодарности: 8

Профиль | Отправить PM | Цитировать


Кхм, а если просчитать все переменные, которые надо, а затем перехватывать ?

-------
Бу! Мерзкий любитель кенгуру!


Отправлено: 17:49, 18-08-2009 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Текст на экран в 3D приложении

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Отключение стандартных сочетаний клавиш в приложении. Mad Mouse Microsoft Windows 2000/XP 0 16-01-2007 01:18
Ошибка в приложении на WinServ2003 Peolla Microsoft Windows NT/2000/2003 1 11-12-2006 10:20
Неверный путь поиска, в ActiveX приложении MasterJedi Программирование и базы данных 2 05-07-2006 14:46
*SOFT* | Псевдографика в консольном приложении MAXY Программирование и базы данных 20 28-01-2006 11:53
Как сохранить текст в DOS приложении в XP? Fortune Хочу все знать 2 06-04-2005 09:52




 
Переход