hi all!
ich hab jetzt mein programm soweit,dass es per timer immer dafür sorgt, dass alle icq-fenster (vorübergehend) in einer listbox dargestellt werden, um überrpüfen zu können ob er auch alle fenster findet.. macht er! klappt perfekt.
so, jetzt kommts:
dann hab ich nen 2. timer, der immer das hier macht:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
begin
if (form1.ListBox1.Items.Count>0) then
begin
for i:=0 to form1.ListBox1.Items.Count do
begin
ein_fenster_checken(form1.ListBox1.Items.strings[i]);
end;
end;
end;
(hab die schleife auch schon mit "for i:=0 to form1.ListBox1.Items.Count-1 do" versucht, bring aber das selbe ergebnis und zwar einfunktionierendes, hab mal zu testzwecken eine msgbox in die schleife eingebaut, hat alle fenster angezeigt...
Delphi-Quellcode:
function ein_fenster_checken(name:string):string;
var
fenster,memo: hwnd;
buffer: array[0..1024] of char;
i,position: integer;
eingetragen:boolean;
begin
fenster:=findwindow(nil,pchar(name));
if (fenster<>0) then
begin
memo:= getdlgitem(fenster, 7001); //7001 ist das feld wo der nachrichtenverlauf drin steht
if (memo<>0) then
begin
SendMessage(memo, wm_gettext, sizeof(buffer), Integer(@buffer));
showmessage(string(buffer));// hab ich nur zu testzwecken drin
if (string(buffer)<>'') then
begin
for i:=0 to high(uin) do
begin
if (uin[i].name=name) then //wenn schon vorhanden im array
begin
showmessage('user betreits angelegt');
end;
if (eingetragen=false) then
begin
showmessage('user wurde neu angelegt');
setlength(uin,length(uin)+1);
uin[high(uin)].name:=name;
end;
end;
end;
end;
end else
form1.ListBox1.Items.Delete(form1.ListBox1.Items.IndexOf(name));
das problem ist die zeile oben, wo er den buffer anzeigen soll:
wenn ich einen user im icq anklicke sodass sein fenster aufgeht und er z.b. eine N/A-message gesetzt hat, welche durch icq5 beim öffnen des user-fensters sofort angezeigt wird, bekomme ich die auch problemlos angezeigt (in meiner showmessage) anders, wenn ich mit ihm gechattet habe, das chat fenster von ihm geschlossen habe un des dann wieder auf mache (text steht dann ja noch drin) kommt eine leere msgbox!! wenn ich dem jenigen dann schreibe bekomm (weilsja per timer immer wieder gemacht wird) den kompletten nachrichtenverlauf...
könnt ihr euch das erklären??
bitte umn hilfe!