Tlen i przechwycenie rozmowy z okna czatu

0

Sugerując sie na kodzie z FAQ przechwycenia adresu http z IE probowalem przechwycic okno rozmowy z Tlena ale nie udaje mi sie :/ Moze cos zle postepuje?? Nie moge znaleŹĆ handle samego edita/memo wyswietlajacego jak ktos do mnie pisze. Moze zle to robie?? Ponizej wstawiam kod by mogl ktos sprawdzic co zle robie:

function GetURL:string;
var
  ie,toolbar,combo,
  comboboxex,edit,
  worker,toolbarwindow,docobject,mesage:hwnd;
begin
  ie := FindWindow(pchar('Tchat'),nil);
  worker := FindWindowEx(ie,0,'TPageControl',nil);
  toolbar := FindWindowEx(worker,0,'TTabSheet',nil);
  comboboxex := FindWindowEx(toolbar, 0, 'TPanel', nil);
   combo := FindWindowEx(comboboxex,0,'Shell Embedding',nil);
 docobject := FindWindowEx(combo,0,'Shell DocObject View',nil);
  mesage := FindWindowEx(docobject, 0, 'Internet Explorer_Server', nil);
   
    if mesage =0 then form1.caption:='nie' else form1.Caption:='tak';
   getwindowtext(mesage,bufor,sizeof(bufor));
   result:=bufor;
end;

Sugerowalem sie tez przechwyceniem komunikatu z okna cczata Gadu gadu znalezionego na forum i tez na marne :/
Moze ktos wie jakie jest handle tego memo??

0

Problem w tym, że to nie jest Memo, tylko w najlepszym wypadku WebBrowser. Wylistuj wszystkie okna potomne okna z rozmową (EnumChildWindows?) i szukaj :).

0

po każdym FindWindow[ex] sprawdzaj czy znaleziono, będziesz wiedział w którym miejscu się zawaliło

prosty program do sprawdzania klas (Timer + Edit):

procedure TForm1.Timer1Timer(Sender: TObject);
var pozycja:TPoint;
 uchwyt:HWND;
 klasa:array[0..MAX_PATH] of char;
 tekst:string;
begin
 GetCursorPos(pozycja);
 uchwyt:=WindowFromPoint(pozycja);
 tekst:='';
 while uchwyt<>0 do begin
  GetClassName(uchwyt, klasa, MAX_PATH);
  tekst:=tekst+' <- '+klasa;
  uchwyt:=GetParent(uchwyt);
 end;
 Edit1.Text:=Copy(tekst,5,Length(tekst));
end;

albo (Timer + Memo):

procedure TForm1.Timer1Timer(Sender: TObject);
var last, text: string; h: HWND; pozycja: TPoint;
	klasa:array[0..MAX_PATH] of char;
begin
	GetCursorPos(pozycja);
	h := WindowFromPoint(pozycja);
	text := '';
	last := '';
	while h <> 0 do begin
		if last <> '' then
			text := '	h := FindWindowEx(h, 0, ''' + last + ''', nil);' +
				 #13#10 + text;
		GetClassName(h, klasa, MAX_PATH);
		last := klasa;
		h := GetParent(h);
	end;
	text := '	h := FindWindow(''' + last + ''', nil);' + #13#10 + text;

	Memo1.Clear;
	Memo1.Lines.Add('function GetXHWND: HWND;');
	Memo1.Lines.Add('var h: HWND;');
	Memo1.Lines.Add('begin');
	Memo1.Lines.Add(text);
	Memo1.Lines.Add('	Result := h;');
	Memo1.Lines.Add('end;');
end;
0

A nie możesz wziąć Tlen SDK (jest też wersja Delphi) i napisać plugina? Dużo w tym pisałem i moge powiedzieć, że to, co chcesz osiąnąć jest banalnie proste (chyba nawet podobne jest w przykładach do SDK).

0

No tak Szczawik tez nad tym probuje ale nie moge jakos znaleŹĆ funkcji do obslugi okna czata :/. Zalezy mi na przechwyceniu przychodzacych rozmow z protokolu AQQ i jej wtyczki. Nie wiem w jaki sposob sie do tego zabrac.

--
Adamo dzieki za kodzik bardzo sie przydal :) tylko jak tu pobrac tekst z takiego webbroswera??

0

Może tak: masz Tlen z wtyczką do AQQ czy też komunikator AQQ z wtyczką dla protokołu Tlen, bo się zgubiłem?

0

tlen z wtyczka aqq. Pobawilem sie dzisiaj w wyszukiwanie okien potomnych i nie moglem sie pozbyc reklamy :/ bo samo okno rozmowy i okno reklamy nazwy klasy sa takie same. probowalem usunac hooka reklamy poprzez windowhide ale nadal mi wykrywalo hooka reklamy a nie okna rozmowy :/

0

Jak chodzi o same reklamy, to zajrzyj tu. Jeśli chodzi o przechwycenie wiadomości po wysłaniu/przed odbiorem, to przejrzyj SDK do Tlena.

0

No i lipa z SDK. AQQ jst pluginem i tworca tego pluginu nie stworzyl takiego hooka lub nie jest on opisany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1