Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Count aus einer "fremden" Listbox (https://www.delphipraxis.net/11780-count-aus-einer-fremden-listbox.html)

maststef 13. Nov 2003 15:12


Count aus einer "fremden" Listbox
 
Jo, der titel sagts ja schon:
Wie kann ich die Count-Option einer Listbox auslesen, die sich in einer anderen Applikation befindet?

Luckie 13. Nov 2003 15:15

Re: Count aus einer "fremden" Listbox
 
Handle des Hautpfensters holen Hier im Forum suchenFindWindow, [dp[Enumwindows[/dp], Handle der Listbox holen Hier im Forum suchenFindWindowEx, Hier im Forum suchenEnumChildwindows und den Rest bekommst du hier: http://www.luckie-online.de/tutorials/win32apituts/ -> Listbox Tutorial. Wenn mich nicht alles täuscht, war es ein LB_GETCOUNT oder LB_COUNT oder so was.

maststef 13. Nov 2003 15:38

Re: Count aus einer "fremden" Listbox
 
Danke für die schnelle Antwort. :)
Das Handle vom Fenster hab ich schon, aber ich komme irgendwie nicht mit den Parametern von FindWindowEx klar. Kann mir da noch jemand Tipps geben?

toms 13. Nov 2003 16:35

Re: Count aus einer "fremden" Listbox
 
Delphi-Quellcode:
var
  hListBox, hHandleDesFensters : HWND;
begin
  hHandleDesFensters := FindWindow(nil, 'FormName')
  hListBox := FindWindowEx(hHandleDesFensters, 0, 'TListBox', nil);
  ItemCount := SendMessage(hListBox, LB_GETCOUNT, 0, 0);
end;

maststef 13. Nov 2003 19:15

Re: Count aus einer "fremden" Listbox
 
Danke für den Code, aber da kommt dann immer 0 bei raus.

Und ja, ich habe 'FormName' in den Namen des Fenster geändert... :-D
Oder muss ich 'TlistBox' auch noch abändern?

Christian Seehase 13. Nov 2003 19:23

Re: Count aus einer "fremden" Listbox
 
Moin maststef,

prüf' doch einfach, ob das Handle das FindWindowEx einen gültigen Wert enthält.
Der Klassenname muss dem des Controls ensprechen, kann also, z.B., auch LISTBOX heissen.

maststef 13. Nov 2003 19:56

Re: Count aus einer "fremden" Listbox
 
aha, Danke.
Also mit 'LISTBOX' hat er zumindest das Handle bekommen, aber SendMessage liefert trotzdem noch 0 zurück.

Alexander 14. Nov 2003 15:59

Re: Count aus einer "fremden" Listbox
 
DAnn würde ich sagen, dass du mal deinen Code posten solltest:
Ich würde das in etwa so machen:
Delphi-Quellcode:
SendMessage({ Hier kommt das gefunde Handle der Listbox rein... }, LB_GETCOUNT, 0, 0);

maststef 15. Nov 2003 09:29

Re: Count aus einer "fremden" Listbox
 
Also so habe es ich gemacht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hLB, hWindow : HWND;
  itemcount: integer;
begin
  hWindow := FindWindow(nil, 'Erkennungsliste');
  hLB := FindWindowEx(hWindow, 0, 'LISTBOX', nil);
  ItemCount := SendMessage(hLB, LB_GETCOUNT, 0, 0);
  label1.Caption := inttostr(ItemCount);
end;
hLB liefert das Handle der ListBox korrekt zurück (also ich nehme mal an das es das von der ListBox ist, denn eine andere ListBox ist in dem Fenster 'Erkennungsliste' nicht).
ItemCount ist immer 0.
'Erkennungsliste' ist übrigens das Fenster von AntiVir, wo drinsteht welche Viren es erkennt und ich wollte schon immer mal wissen, wie viele das sind... :D

Luckie 15. Nov 2003 12:21

Re: Count aus einer "fremden" Listbox
 
Das ist ein Listview und keine Listbox. FensterKlasse: SysListview32.

Delphi-Quellcode:
uses
  commctrl;

procedure TForm1.Button1Click(Sender: TObject);
var
  hWnd: Cardinal;
  hListview: Cardinal;
  ItemCount: Cardinal;
begin
  hWnd := FindWindow(nil, 'Erkennungsliste');
  if hWnd <> 0 then
  begin
    hListview := FindWindowEx(hWnd, 0, 'SysListview32', nil);
    ItemCount := SendMessage(hListview, LVM_GETITEMCOUNT, 0, 0);
    ShowMessage(IntToStr(ItemCount));
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz