Перехват текста

Больше
13 года 7 мес. назад #1 от GogenZzo
GogenZzo создал тему: Перехват текста
Подскажите пожалуйста. При перехвате текста PE_MSG_SENT, что нужно возвращать в указателе? return pReturn ???

И еще, как дебажить DLL ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
13 года 7 мес. назад - 13 года 7 мес. назад #2 от cy6
cy6 ответил в теме RE: Перехват текста
GogenZzo писал(а):

Подскажите пожалуйста. При перехвате текста PE_MSG_SENT, что нужно возвращать в указателе? return pReturn ???


return pReturn - красивый указатель, Си что ли? :silly:

Для ленивых, вырезка из Protocol_ICQ.pas:
vS := plugins.castEv( PE_MSG_SENT, c.uid,oe.flags,oe.info);
    if (vS>'') then
     if(ord(vS[1])=PM_DATA) then
     begin
      send_msg:=_istring_at(vS, 2);
      if length(vS)>2+4+length(send_msg) then
       oe.info :=_istring_at(vS, 2+4+length(send_msg))
      else
       oe.info := send_msg;
     end
     else if (ord(vS[1])=PM_ABORT) then
      exit else begin end
    else
      send_msg := oe.info;
  if Length(send_msg) = 0 then exit;

  oe.id:=ICQ.sendMsg(c.uid,oe.flags,send_msg,result);

Как видим, для возврата ожидается NULL (nil), или пакет PM_DATA.
В качестве содержимого пакета данных, видимо, есть целых два варианта.
И оба они ведут к тому, что будет отправлена другая строка.

Если возвратить пакет PM_ABORT, это зарубит отправку сообщения вообще.
Мало ли, слово какое запрещенное - ВВП, ХЗ, ППЦ и т.д. :lol:

И еще, как дебажить DLL ?

Дебаггером, чем же еще. :silly: Дебаггером процесса, видимо.
А можно еще логи писать в текстовик. :)
Последнее редактирование: 13 года 7 мес. назад пользователем cy6.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
13 года 7 мес. назад #3 от GogenZzo
GogenZzo ответил в теме RE: Перехват текста
Все, разобрался. В SDK не очень хорошо написано

if event = PE_MSG_SENT
INT dest uin
INT flags
ISTRING text

Должно быть

if event = PE_MSG_SENT
INT dest uin
INT flags
ISTRING text

return:

1) PM_ABORT
2) PM_DATA
ISTRING text

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
13 года 7 мес. назад - 13 года 7 мес. назад #4 от cy6
cy6 ответил в теме RE: Перехват текста
GogenZzo писал(а):

Все, разобрался. В SDK не очень хорошо написано

Ага, недокументированный SDK, потому лучше сразу лезть в самый свежий доступный исходник. :)

if event = PE_MSG_SENT
INT dest uin
INT flags
ISTRING text

return:

1) PM_ABORT
2) PM_DATA
ISTRING text


Нет, PM_DATA два варианта:
BYTE PM_DATA, ISTRING text
BYTE PM_DATA, ISTRING unknown, ISTRING text

И не забывайте еще про ответ NULL (nil), его содержимое (которого нет) просто игнорируется и программа выполняется дальше как должна. Практическое применение такого варианта: перехват текста, без его изменений.
Последнее редактирование: 13 года 7 мес. назад пользователем cy6.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: bassvazoozaDelphukdekRapid D
Время создания страницы: 0.271 секунд
Работает на Kunena форум