Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2010, 13:28   #1
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию Общение с DLL чужого процесса?

Здравствуйте, уважаемые!
Помогите решить проблему...

Есть приложение-1, оно поднимает сервер на TServerSocket и внедряет библиотеку в чужой процесс.
Есть Библиотека, она поднимает клиент и пытается слать инфу из чужого процесса Приложению-1.
Есть собсно само Приложение-2, исходник коего я не знаю, но внедряю в него свою библиотеку.

Сервер слушает обычно:
Код:
procedure TDLLInjectForm.SockClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Sock: Client connected!');
end;
procedure TDLLInjectForm.SockClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Client Disconnected!');
end;
procedure TDLLInjectForm.SockClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  Memo1.Lines.Add('Client Error');
end;
procedure TDLLInjectForm.SockClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('ClientRead');
  if Socket.ReceiveLength>0 then Memo1.Lines.Add(Socket.ReceiveText);
end;
procedure TDLLInjectForm.SockListen(Sender: TObject; Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Сервер слушает');
end;
Принимает коннекты от другого приложения. Принимает текст. Всё отлично...

Клиент в библиотеке:
Код:
{ TSockClass }
procedure TSockClass.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  ShowMessage('ClientConnect');
  Sock.Socket.SendText('sdgsdfhgdfhdjfgjfjghjghjgh');
end;
procedure TSockClass.ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin

end;
procedure TSockClass.ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin

end;
procedure TSockClass.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin

end;

begin
  SockClass:=TSockClass.Create;
  Sock:=TClientSocket.Create(nil);
  Sock.Address:='127.0.0.1';
  Sock.ClientType:=ctNonBlocking;
  Sock.Port:=5678;
  Sock.OnConnect:=SockClass.ClientConnect;
  Sock.OnDisconnect:=SockClass.ClientDisconnect;
  Sock.OnError:=SockClass.ClientError;
  Sock.OnRead:=SockClass.ClientRead;

  // кучакода
end.
Мессага не вылазит у приложения-2, приложение-1 не сообщает о подключении клиента.
Тот же самый код, но из приложения-3 (тестового), принимает подключения и текст...

Тип подключения и порт указаны верно. Код просто скопирован из другого приложения (оттуда, где он работал)

В чем может быть дело?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 26.12.2010, 12:37   #2
Jacobson
Пользователь
 
Аватар для Jacobson
 
Регистрация: 26.01.2010
Сообщений: 47
По умолчанию

Хм... Интересная у тебя задумка, хоть я и не поощряю подобный софт! Но могу помочь с твоей проблемой, не бесплатно конечно! Если согласится? Я смогу тебе помочь рабочими исходниками для твоего проекта. Если заинтересован пиши: lajacobson@yandex.ru
P.S.: Бесплатный сыр бывает только в мышеловке! А ближнему помогать надо, Конфуций сказал: Почеши мою спину я почешу твою. ;-)
Всё не то чем кажется...
Jacobson вне форума Ответить с цитированием
Старый 26.12.2010, 12:57   #3
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Во-первых, софт не является хакерским. Пишу бота для игры Lineage II, в библиотеке перехватываю функцию пакетного движка (общение с сервером).
Во-вторых, я не прошу полное решение, я прошу совета.
В-третьих, уже разобрался сам. В библиотеках нет цикла обработки сообщений, поэтому нужно использовать тип сокета ctBlocking и отдельный поток для цикла ожидания пакетов.

Тему можно закрыть.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
закрытие чужого процесса Dimon Win Api 7 12.05.2010 12:01
[DLL] Загрузка и выгрузка dll в/из чужого процесса Человек_Борща Win Api 4 28.02.2010 17:47
Изменение чужого процесса Namolem Общие вопросы C/C++ 3 02.02.2010 13:38
Приоритет чужого процесса (консультация) Air Win Api 9 06.03.2008 20:05
Ждать завершения чужого процесса ERASERROR Win Api 2 04.02.2008 08:23