forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Вывести Текст В чужих Играх (http://forum.boolean.name/showthread.php?t=664)

AVin 11.02.2006 11:50

Каким образом можно вывести свою строку в запущенной игре (к примеру в КС-е) Вот делают трейнеры, и там в некоторых есть такая вещь.
Я сейчас делаю примочку к чату сетевому, вот хочу чтоб он сообщения из чата в играх показывал

impersonalis 11.02.2006 11:58

Хым... в целом можно найти строку в ехе или конфигурационных файлах и просто перезаписть её.
В твоём случае нужно реализовать работу с памятью - а именно, просканировать память процесса и найти необходимые адреса для перезаписи. Ну или дизассемблировать ихсодник =/

AVin 11.02.2006 12:09

хм, не так мне не пойдет. Тут надо что то ттипа сообщение поверх всех окон

Jet 11.02.2006 14:05

http://www.rsdn.ru/Forum/Message/791968.htm

http://borland.xportal.ru/forum/printview....fe009eba1d32b64

- вот пара вариантов. а вообще яндекс рулит

PS. просьба - расскажи потом получилось или нет!

jimon 11.02.2006 19:10

если ето специально для игр :
перехватить хендл используемых api рисования
и рисовать уже там :)

если для всех прог
можно зделать мега хитро : работать с видухой напрямую, правда ето неполучится... ну вообщем бредово :)

а так идеальный вариант ето перхватить хендл окна которое в фокусе и рисовать в него :)

ZanoZa 11.02.2006 19:59

Цитата:

Originally posted by jimon@11.2.2006, 18:10
если ето специально для игр :
перехватить хендл используемых api рисования
и рисовать уже там :)

если для всех прог
можно зделать мега хитро : работать с видухой напрямую, правда ето неполучится... ну вообщем бредово :)

а так идеальный вариант ето перхватить хендл окна которое в фокусе и рисовать в него :)

Интересно...а это тока с C++ можно сделать?

impersonalis 11.02.2006 21:59

Хоть кто-нибудь смотрел ссылки Джета?
Судя по постам - нет

ZanoZa 11.02.2006 22:58

чё-то ощущение что пора c++ поучивать:)

jimon 11.02.2006 23:15

я смотрел
и ниче толкового не нашол

alex-mad 12.02.2006 00:56

Цитата:

Originally posted by jimon@11.2.2006, 22:15
я смотрел
и ниче толкового не нашол

ээээ...ты блинов не свежих объелся? там неплохие советы...
и в итоге всё у всех работает...

ZanoZa 12.02.2006 13:19

толкового там очень много!

jimon 12.02.2006 15:00

гм :) например ?

ZanoZa 12.02.2006 16:01

Цитата:

Originally posted by jimon@12.2.2006, 14:00
гм :) например ?

Цитата:

Код:

//По умолчанию 10 секунд рисуем на экран
DWORD TextShow=10000;
//Выводимый на экран текст
char *Textbuf=NULL;
//Поток для рисования текста на экране
DWORD CALLBACK DoText(void *hInstance)
{
int bkmodeold;
COLORREF oldcolor;
//Запомним время начала показа
DWORD TextStart=GetTickCount();
//Берём контекст экрана
//Крутимся заданое в TextShow время
while(GetTickCount() -TextStart <=TextShow)
{
HDC ScreenDC=GetDC(0);
RECT R,Rtext;
GetClipBox(ScreenDC,&R);
//Устанавливаем цвет текста и прозрачный фон
oldcolor=SetTextColor(ScreenDC,COLORREF(0,0,255));
bkmodeold=SetBkMode(ScreenDC,TRANSPARENT);

Rtext.left=(R.right-R.left)/2; Rtext.right=Rtext.left+100;
Rtext.top=((R.bottom-R.top))/2; Rtext.bottom=Rtext.top+100;
if(Textbuf)
{
//Определяем прямоугольник для текста
DrawText(ScreenDC,Textbuf,strlen(Textbuf),&Rtext,D T_CALCRECT|DT_CENTER);
//Рисуем на экране
DrawText(ScreenDC,Textbuf,strlen(Textbuf),&Rtext,D T_CENTER);
}
SetBkMode(ScreenDC,bkmodeold);
SetTextColor(ScreenDC,oldcolor);
//Освобождаем контекст экрана
ReleaseDC(0,ScreenDC);
}
//Перерисовываем экран чтобы убрать нашу картинку
RedrawWindow(GetDesktopWindow(), NULL, NULL,
RDW_INVALIDATE |RDW_UPDATENOW |RDW_ALLCHILDREN);
return 0;
}
//Запуск потока для рисования текста на экране
ULONG Tid;
HANDLE hThread;
TextShow=10000; //Устанавливаем время показа
//Устанавливаем текст для показа
Textbuf="Sample Show Text";
hThread=::CreateThread(0,0,DoText,(void *)hInst, 0, &Tid);
::SetThreadPriority(hThread,THREAD_PRIORITY_NORMAL );
::CloseHandle(hThread);
//Остановить поток можно в любой момент
TextShow=0;

а это ч по твоему?

jimon 12.02.2006 23:25

а теперь преврати етот код для борланда в код под MSVC :))

alex-mad 13.02.2006 00:23

чем этот код тебе не нравится?


Часовой пояс GMT +4, время: 03:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot