Для тех, кто хочет сделать мир лучше.
-
koshmel
- VIP
- Сообщения: 373
- Зарегистрирован: 24.03.2007
-
Контактная информация:
#1
Сообщение
18.07.2008, 12:33
хочу перехватить In Out консоли на Дельфи.
ето все что у меня получилось вытянуть :%)
сама консоль выходит у меня с ошибкой
Код: Выделить всё
Console initialized.
Game.dll loaded for "Team Fortress"
Particles: Missing 'particles/error.pcf'
maxplayers set to 24
Network: IP 192.168.0.2, mode MP, dedicated Yes, ports 27015 SV / 27005 CL
CTextConsoleWin32::GetLine: !GetNumberOfConsoleInputEvents
думаю, я все таки не правильно что то делаю :D
очень нужно для завоевания мира
-
Вложения
-
- console.jpg (7.63 КБ) 4673 просмотра
- console.jpg (7.63 КБ) 4673 просмотра
kadet89 писал(а):Не врубился в этот алгоритм...но думаю моно попробовать через бинарник изменить саму команду...только вот в каком файле она?
-
andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
-
Контактная информация:
#2
Сообщение
18.07.2008, 14:36
Раз на Дельфи, то тебе нужен Delphiworld. На крайняк - заюзай поиск на delphimasters.ru.
Я нашел три рабочих примера в ДельфиВорлде и вполне успешно их юзаю. Выложить не могу, тк нахожусь в 100км от дома, где это все ;)
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
-
koshmel
- VIP
- Сообщения: 373
- Зарегистрирован: 24.03.2007
-
Контактная информация:
#3
Сообщение
18.07.2008, 16:33
нашол рабочий вариант (ток он без своего потока)
думаю и через ето падает консоль сервера.
ищу еще более работо способный вариант
kadet89 писал(а):Не врубился в этот алгоритм...но думаю моно попробовать через бинарник изменить саму команду...только вот в каком файле она?
-
Dark Daskin
- Сержант
- Сообщения: 71
- Зарегистрирован: 07.12.2007
- Откуда: Санкт-Петербург
-
Контактная информация:
#4
Сообщение
23.09.2008, 16:40
Сегодня тоже столкнулся с этой проблемой. Если кто-то нашёл решение, опишите, я всё перегуглил, но безрезультатно. Пишу на C#, но пойму любой ответ.
╔════════════════════════════╗
║
▼ Скачать все GCF:
BitTorrent |
HTTP ▼║
╚════════════════════════════╝
H4sICCl+V0gAAAALMOEyM1YwMeL6wcfwgIFFrlZBgJGBQV7RUXFO4oU+lQWOSkETDTpVFtQqX/po0y+v4Kwk1GjUyaLorNiTcKcPqJ4BAhhx0uxQmgNCW5yzPPOCmdNQRdOlyYOh01PlpUufH3N/paqmyyRPlk5Hi2cWfX7OnYYKINUODIwKMHMI0IxqLDJPXU4xMirKK0110WJkfK6yaGrOE0ZGTSAdCuSry8s8dnkFVM/C0MjAAKbbcJrnAKENFRgZJNUlLxgBaVVNlQksQFox02YOB4i/UmGSMEjefsYcZSDNINDAwKAA1w8AJT7WI1kBAAA=
-
koshmel
- VIP
- Сообщения: 373
- Зарегистрирован: 24.03.2007
-
Контактная информация:
#5
Сообщение
23.09.2008, 16:52
Я тоже не нашол =(
kadet89 писал(а):Не врубился в этот алгоритм...но думаю моно попробовать через бинарник изменить саму команду...только вот в каком файле она?
-
andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
-
Контактная информация:
#6
Сообщение
23.09.2008, 20:06
Ладно. На выходных (а может и на неделе) буду дома, поэксперементирую ;)
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
-
Letov
- Нович0к
- Сообщения: 1
- Зарегистрирован: 09.11.2008
#7
Сообщение
09.11.2008, 20:15
drkb - очень полезная вещь (
http://www.drkb.ru/) Там много хорошего материала по разным темам, в том числе и по данной.
Hужно использовать пайпы (CreatePipe), и работать с ними как с обычным файлом.
Код: Выделить всё
const
H_IN_READ = 1;
H_IN_WRITE = 2;
H_OUT_READ = 3;
H_OUT_WRITE = 4;
H_ERR_READ = 5;
H_ERR_WRITE = 6;
type
TPipeHandles = array [1..6] of THandle;
var
hPipes: TPipeHandles;
ProcessInfo: TProcessInformation;
(************CREATE HIDDEN CONSOLE PROCESS************)
function CreateHiddenConsoleProcess(szChildName: string;
ProcPriority: DWORD; ThreadPriority: integer): Boolean;
label
error;
var
fCreated: Boolean;
si: TStartupInfo;
sa: TSecurityAttributes;
begin
// Initialize handles
hPipes[ H_IN_READ ] := INVALID_HANDLE_VALUE;
hPipes[ H_IN_WRITE ] := INVALID_HANDLE_VALUE;
hPipes[ H_OUT_READ ] := INVALID_HANDLE_VALUE;
hPipes[ H_OUT_WRITE ] := INVALID_HANDLE_VALUE;
hPipes[ H_ERR_READ ] := INVALID_HANDLE_VALUE;
hPipes[ H_ERR_WRITE ] := INVALID_HANDLE_VALUE;
ProcessInfo.hProcess := INVALID_HANDLE_VALUE;
ProcessInfo.hThread := INVALID_HANDLE_VALUE;
// Create pipes
// initialize security attributes for handle inheritance (for WinNT)
sa.nLength := sizeof(sa);
sa.bInheritHandle := TRUE;
sa.lpSecurityDescriptor := nil;
// create STDIN pipe
if not CreatePipe( hPipes[ H_IN_READ ], hPipes[ H_IN_WRITE ], @sa, 0 ) then
goto error;
// create STDOUT pipe
if not CreatePipe( hPipes[ H_OUT_READ ], hPipes[ H_OUT_WRITE ], @sa, 0 ) then
goto error;
// create STDERR pipe
if not CreatePipe( hPipes[ H_ERR_READ ], hPipes[ H_ERR_WRITE ], @sa, 0 ) then
goto error;
// process startup information
ZeroMemory(Pointer(@si), sizeof(si));
si.cb := sizeof(si);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.wShowWindow := SW_HIDE;
// assign "other" sides of pipes
si.hStdInput := hPipes[ H_IN_READ ];
si.hStdOutput := hPipes[ H_OUT_WRITE ];
si.hStdError := hPipes[ H_ERR_WRITE ];
// Create a child process
try
fCreated := CreateProcess( nil, PChar(szChildName), nil, nil, True,
ProcPriority, // CREATE_SUSPENDED,
nil, nil, si, ProcessInfo );
except
fCreated := False;
end;
if not fCreated then
goto error;
Result := True;
CloseHandle(hPipes[ H_OUT_WRITE ]);
CloseHandle(hPipes[ H_ERR_WRITE ]);
// ResumeThread( pi.hThread );
SetThreadPriority(ProcessInfo.hThread, ThreadPriority);
CloseHandle( ProcessInfo.hThread );
Exit;
//-----------------------------------------------------
error:
ClosePipes( hPipes );
CloseHandle( ProcessInfo.hProcess );
CloseHandle( ProcessInfo.hThread );
ProcessInfo.hProcess := INVALID_HANDLE_VALUE;
ProcessInfo.hThread := INVALID_HANDLE_VALUE;
Result := False;
end;
http://delphiworld.narod.ru/
DelphiWorld 6.0
©Drkb::02189
-
Aizek
- Нович0к
- Сообщения: 21
- Зарегистрирован: 02.07.2008
- Поблагодарили: 1 раз
#8
Сообщение
07.06.2009, 14:18
извиняюсь канешна что выкопал труп... но через пайпы консоль сервака не перехватить, потому что он использует ф-ции работы с консолью, которые вызвращают ошибку если консоль перенаправить на себя. нужно внедрять dll в контекст процесса и из нее уже получать данные из консоли. я в ближайшее время попытаюсь реализовать эту возможность.
хочу чтобы виндовый сервак обновлялся сам :)
-
Aizek
- Нович0к
- Сообщения: 21
- Зарегистрирован: 02.07.2008
- Поблагодарили: 1 раз
#9
Сообщение
17.07.2009, 11:45
Автоматическое обновление
читать
Последний раз редактировалось
Aizek 29.07.2009, 17:47, всего редактировалось 1 раз.
-
bober943
- Сержант
- Сообщения: 38
- Зарегистрирован: 22.10.2010
#10
Сообщение
13.04.2011, 23:03
Точно такая же проблема на CPP
-
bober943
- Сержант
- Сообщения: 38
- Зарегистрирован: 22.10.2010
#11
Сообщение
19.04.2011, 15:11
Что, нет никакого способа перехвата консоли на C++?
-
MOZGIII
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
-
Контактная информация:
#12
Сообщение
19.04.2011, 17:27
Читай последние четыре сообщения и гугли про внедрение dll.