const WAITTIME = 200;
const MSG = '
HI';
var wlist : TWindowList;
i : integer;
ICQ : hwnd;
ICQ2 : hwnd;
LongParam : integer;
lPoint : TPoint;
lStart : cardinal;
Document: IHTMLDocument3;
ele: IHTMLElement;
begin
//Window List erstellen
wlist := TWindowList.Create;
//Auch unsichtbare Fenster anzeigen
wlist.ShowUnvisibleWindows := true;
//Alle Fenster auflisten
wlist.EnumTopLevelWindows;
//Nach dem ICQ Fenster gucken
for i := 0
to wlist.Count-1
do
if wlist[i] =('
ICQ')
then
ICQ := Wlist.Handles[i];
//Punkt, auf dem man den Maustrigger machen muss, um
//das Away-Fenster zu erhalten
lPoint.X := 80;
lPoint.Y := 80;
//Punkt für Windows konvertieren
LongParam := lPoint.X + lPoint.Y
shl 16;
//Mouse klick
PostMessage(ICQ, WM_LBUTTONDOWN, MK_LButton,LongParam);
PostMessage(ICQ, WM_LBUTTONUP, MK_LButton, LongParam);
//Gewisse Zeit waren, damit das Away Fenster auch aktiv ist!
lStart := gettickcount;
repeat
Application.ProcessMessages;
until
GetTickCount - lStart > WAITTIME;
//Erneut alle Fenster auflisten
wlist.EnumTopLevelWindows;
//Nach dem Away Fesnter suchen
for i := 0
to wlist.Count-1
do
if wlist[i] = '
Persönlicher Statusmanager'
then
ICQ2 := wlist.Handles[i];
//Alle Child Fenster vom Away Fenster aufzählen
wlist.EnumChildWindows(icq2);
//Focus setzen per Mouseclick!
lPoint.X := 285;
lPoint.Y := 200;
LongParam := lPoint.X + lPoint.Y
shl 16;
PostMessage(ICQ2, WM_LBUTTONDOWN, MK_LButton,LongParam);
PostMessage(ICQ2, WM_LBUTTONUP, MK_LButton, LongParam);
//Apply text
//HTML Document holen, in dem die Away msg steht
GetHTMLFromHWnd(wlist.Handles[1],Document);
//Text setzen
try
(Document.documentElement.document
AS IHTMLDocument2).body.innerHTML := MSG;
except
//Hier Exception handler einfügen
end;
//WList zerstören, Fenster per Mouseclick schliessen.
wlist.Destroy;
lPoint.X := 285;
lPoint.Y := 350;
LongParam := lPoint.X + lPoint.Y
shl 16;
PostMessage(ICQ2, WM_LBUTTONDOWN, MK_LButton,LongParam);
PostMessage(ICQ2, WM_LBUTTONUP, MK_LButton, LongParam);
end;