Ну как я вам ещё помогу... Для того, чтобы получить handle окна, можно исследовать само главное окно ICQ с помощью функции EnumChildWindows. Вот пример. Ищем по классу RichEdit20A.
Код:
unit Uni_t1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ChatWnd: HWND;
function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
implementation
{$R *.dfm}
function EnumChildWndProc(hndl: HWND; lprm: LPARAM): BOOL; stdcall;
var
WndClassName: PChar;
begin
GetMem(WndClassName, 255);
try
Result := True;
GetClassName(hndl, WndClassName, 255);
if LowerCase(StrPas(WndClassName)) = 'richedit20a' then
begin
ChatWnd := hndl;
Result := False;
end;
finally
FreeMem(WndClassName, 255);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
ICQWNDTEXT = 'ICQ'; // вот здесь напишите реальный заголовок окна ICQ
var
ICQWnd: HWND;
begin
ChatWnd := 0;
ICQWnd := FindWindow(nil, ICQWNDTEXT);
if ICQWnd = 0 then Exit;
EnumChildWindows(ICQWnd, @EnumChildWndProc, 0);
if ChatWnd <> 0 then // нашли!
ShowMessage('Chat Window Handle is ' + IntToStr(ChatWnd))
else // не нашли. Возможно, он — дочернее окно в дочернем
ShowMessage('Not found. Maybe it is a child of a child');
end;
end.
P.S. ICQ ради вас устанавливать не буду, уж простите. Мне накладно скачивать пару десятков мегабайт.