AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi wm_gettext gibt MANCHMAL(!) leeren buffer zurück...*heul*
Thema durchsuchen
Ansicht
Themen-Optionen

wm_gettext gibt MANCHMAL(!) leeren buffer zurück...*heul*

Ein Thema von prinz_inzide · begonnen am 28. Jan 2005 · letzter Beitrag vom 10. Feb 2005
 
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#1

wm_gettext gibt MANCHMAL(!) leeren buffer zurück...*heul*

  Alt 28. Jan 2005, 08:00
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!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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 by Thomas Breitkreuz