|
11.02.2006, 11:50
|
#1
|
AnyKey`щик
Регистрация: 11.12.2005
Сообщений: 8
Написано 0 полезных сообщений (для 0 пользователей)
|
Каким образом можно вывести свою строку в запущенной игре (к примеру в КС-е) Вот делают трейнеры, и там в некоторых есть такая вещь.
Я сейчас делаю примочку к чату сетевому, вот хочу чтоб он сообщения из чата в играх показывал
|
(Offline)
|
|
11.02.2006, 11:58
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Хым... в целом можно найти строку в ехе или конфигурационных файлах и просто перезаписть её.
В твоём случае нужно реализовать работу с памятью - а именно, просканировать память процесса и найти необходимые адреса для перезаписи. Ну или дизассемблировать ихсодник =/
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
11.02.2006, 12:09
|
#3
|
AnyKey`щик
Регистрация: 11.12.2005
Сообщений: 8
Написано 0 полезных сообщений (для 0 пользователей)
|
хм, не так мне не пойдет. Тут надо что то ттипа сообщение поверх всех окон
|
(Offline)
|
|
11.02.2006, 14:05
|
#4
|
ПроЭктировщик
Регистрация: 04.09.2005
Сообщений: 139
Написано одно полезное сообщение
|
|
(Offline)
|
|
11.02.2006, 19:10
|
#5
|
|
если ето специально для игр :
перехватить хендл используемых api рисования
и рисовать уже там
если для всех прог
можно зделать мега хитро : работать с видухой напрямую, правда ето неполучится... ну вообщем бредово
а так идеальный вариант ето перхватить хендл окна которое в фокусе и рисовать в него
|
|
|
11.02.2006, 19:59
|
#6
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
|
(Offline)
|
|
11.02.2006, 21:59
|
#7
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Хоть кто-нибудь смотрел ссылки Джета?
Судя по постам - нет
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
11.02.2006, 22:58
|
#8
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
чё-то ощущение что пора c++ поучивать
|
(Offline)
|
|
11.02.2006, 23:15
|
#9
|
|
я смотрел
и ниче толкового не нашол
|
|
|
12.02.2006, 00:56
|
#10
|
Модератор
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений (для 10 пользователей)
|
Originally posted by jimon@11.2.2006, 22:15
я смотрел
и ниче толкового не нашол
|
ээээ...ты блинов не свежих объелся? там неплохие советы...
и в итоге всё у всех работает...
|
(Offline)
|
|
12.02.2006, 13:19
|
#11
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
толкового там очень много!
|
(Offline)
|
|
12.02.2006, 15:00
|
#12
|
|
гм например ?
|
|
|
12.02.2006, 16:01
|
#13
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
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;
|
а это ч по твоему?
|
(Offline)
|
|
12.02.2006, 23:25
|
#14
|
|
а теперь преврати етот код для борланда в код под MSVC )
|
|
|
13.02.2006, 00:23
|
#15
|
Модератор
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений (для 10 пользователей)
|
чем этот код тебе не нравится?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:43.
|