![]() |
wm_gettext gibt MANCHMAL(!) leeren buffer zurück...*heul*
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:
(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...
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;
Delphi-Quellcode:
das problem ist die zeile oben, wo er den buffer anzeigen soll:
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)); 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! |
Re: wm_gettext gibt MANCHMAL(!) leeren buffer zurück...*heul
Fenster sind durch keinerlei Konvention verpflichtet den Windows-Mechanismus zu benutzen um Text anzuzeigen. Beispiel TLabel.
|
Re: wm_gettext gibt MANCHMAL(!) leeren buffer zurück...*heul
Zitat:
Hast Du schon geprüft ob memo immer ein gültiges Handle ist? Eventuell wird durch das Verstecken/Anzeigen das Handle verändert womöglich sogar die Control-ID(7001). |
Re: wm_gettext gibt MANCHMAL(!) leeren buffer zurück...*heul
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz