Перехват текста
- GogenZzo
- Не в сети
- New Member
Меньше
Больше
- Сообщений: 4
- Спасибо получено: 0
14 года 2 мес. назад #1
от GogenZzo
GogenZzo создал тему: Перехват текста
Подскажите пожалуйста. При перехвате текста PE_MSG_SENT, что нужно возвращать в указателе? return pReturn ???
И еще, как дебажить DLL ?
И еще, как дебажить DLL ?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- cy6
- Не в сети
- Elite Member
Меньше
Больше
- Сообщений: 273
- Спасибо получено: 0
14 года 2 мес. назад - 14 года 2 мес. назад #2
от cy6
cy6 ответил в теме RE: Перехват текста
GogenZzo писал(а):
return pReturn - красивый указатель, Си что ли?
Для ленивых, вырезка из Protocol_ICQ.pas:
Как видим, для возврата ожидается NULL (nil), или пакет PM_DATA.
В качестве содержимого пакета данных, видимо, есть целых два варианта.
И оба они ведут к тому, что будет отправлена другая строка.
Если возвратить пакет PM_ABORT, это зарубит отправку сообщения вообще.
Мало ли, слово какое запрещенное - ВВП, ХЗ, ППЦ и т.д.
А можно еще логи писать в текстовик.
Подскажите пожалуйста. При перехвате текста PE_MSG_SENT, что нужно возвращать в указателе? return pReturn ???
return pReturn - красивый указатель, Си что ли?
Для ленивых, вырезка из 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, это зарубит отправку сообщения вообще.
Мало ли, слово какое запрещенное - ВВП, ХЗ, ППЦ и т.д.
Дебаггером, чем же еще. Дебаггером процесса, видимо.И еще, как дебажить DLL ?
А можно еще логи писать в текстовик.
Последнее редактирование: 14 года 2 мес. назад пользователем cy6.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- GogenZzo
- Не в сети
- New Member
Меньше
Больше
- Сообщений: 4
- Спасибо получено: 0
14 года 2 мес. назад #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
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
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- cy6
- Не в сети
- Elite Member
Меньше
Больше
- Сообщений: 273
- Спасибо получено: 0
14 года 2 мес. назад - 14 года 2 мес. назад #4
от cy6
cy6 ответил в теме RE: Перехват текста
GogenZzo писал(а):
Нет, PM_DATA два варианта:
BYTE PM_DATA, ISTRING text
BYTE PM_DATA, ISTRING unknown, ISTRING text
И не забывайте еще про ответ NULL (nil), его содержимое (которого нет) просто игнорируется и программа выполняется дальше как должна. Практическое применение такого варианта: перехват текста, без его изменений.
Ага, недокументированный 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), его содержимое (которого нет) просто игнорируется и программа выполняется дальше как должна. Практическое применение такого варианта: перехват текста, без его изменений.
Последнее редактирование: 14 года 2 мес. назад пользователем cy6.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Модераторы: bass, vazooza, Delphuk, dek, Rapid D
Время создания страницы: 0.269 секунд