|
|
#1
|
|||
|
|||
Запись чата ICQ
У меня на ПК стоит ICQ. Ну так вот мне нужно записывать весь мой чат в txt файл. Пробовал так, но не вышло.
Код:
var H, PageHandle, TabHandle, REHandle: THandle; lpBuffer: PChar; begin H := FindWindow(nil, PChar('ICQ')); if H <> 0 then begin PageHandle := FindWindowEx(H, 0, 'SysTabControl32', nil); if PageHandle <> 0 then begin TabHandle := FindWindowEx(PageHandle, 0, '#000605CC',nil); if TabHandle <> 0 then begin REHandle := FindWindowEx(TabHandle, 0, 'RichEdit20A', nil); if REHandle <> 0 then begin lpBuffer := GetMemory(1024); try SendMessage(REHandle, WM_GETTEXT, 1024, Integer(lpBuffer)); RichEdit1.Text := lpBuffer; finally FreeMemory(lpBuffer); end; |
#2
|
||||
|
||||
Так аська-же ведет журнал сообщений. Зачем дублировать?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Тогда, как получить доступ к журналу сообщений. Но желательно осуществить, то, что я хотел в первом посте. Исправьте мой код. А то он не ловит сообщения((
|
#4
|
|||
|
|||
Неужели мне не помогут на этом форуме?
Переписку нужно получать непосредственно с окна ICQ. Последний раз редактировалось Muxa, 25.06.2009 в 19:35. |
#5
|
|||
|
|||
Проверила на окнах класса 'RichEdit20W' и 'Edit' (что было под рукой) — нормально считывается текст. Вы уверены, что получаете верный дескриптор (или что вообще получаете)? Проверьте трассировкой, что процедура вообще доходит до строки с SendMessage. А если всё же доходит до этой строки, то проверьте, что дескриптор принадлежит именно тому окну класса 'RichEdit20A', в котором находится текст.
|
#6
|
|||
|
|||
Код:
var H, PageHandle, TabHandle, REHandle: THandle; lpBuffer: PChar; begin H := FindWindow(nil, PChar('Tanya')); if H <> 0 then begin PageHandle := FindWindowEx(H, 0, '__oxFrame.class__', nil); if PageHandle <> 0 then begin TabHandle := FindWindowEx(PageHandle, 0, '#000205C2',nil); if TabHandle <> 0 then begin REHandle := FindWindowEx(TabHandle, 0, 'Internet Explorer_Server', nil); if REHandle <> 0 then begin lpBuffer := GetMemory(1024); try SendMessage(REHandle, WM_GETTEXT, 1024, Integer(lpBuffer)); RichEdit1.Text := lpBuffer; finally FreeMemory(lpBuffer); end; Последний раз редактировалось Muxa, 26.06.2009 в 09:08. |