![]() |
|
|
|
|
#1
|
|||
|
|||
|
У меня на ПК стоит 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. |