Newsgroup: it.comp.lang.delphi
Titolo: handle?

Ciao,
come faccio a sapere l'handle di una window?
ad esempio di Internet Explorer o di WinAmp....
Ciao e thks
Simone

ad esempio di Internet Explorer o di WinAmp....
Devi utilizzare la funzione FindWindow che vuole 2 parametri,
uno č il nome della classe della finestra e l'altro č il testo della
finestra.
Se non conosci quest'ultima puoi passargli NIL come parametro.
Ciao
--
- Carlo -
BSSoftware Tips Mailing-List Support

Em ... non riesco a caricare l'allegato ... ecco la unit col codice...
// UNIT1.pas :
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  TForm1 = class(TForm)
    Button2: TButton;
    m: TMemo;
    Button1: TButton;
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;Shift:
TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;Shift:
TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y:
Integer);
    procedure Button2Click(Sender: TObject);
    procedure mMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
  public
    Function GetClass (WH : THandle) : string;
    Function GetText  (WH : THandle) : string;
    Function GetTextM (WH : THandle) : string;
    Function PTSTR    (p : tpoint)   : string;
    Function RSTR     (r : trect)    : string;
    Function RSTRH    (WH : thandle) : string;
  end;
var
  Form1: TForm1;
  h,htt : thandle;
  i : integer;
  dr : boolean;
implementation
{$R *.DFM}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 m.lines.clear;
 i := 0;
 dr := true;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y:
Integer);
var pt : tpoint;
begin
 if not dr then exit;
 pt := clienttoscreen (point (x,y));
 h := windowfrompoint (pt);
 caption := '';
 caption := PTSTR(pt)+' ['+GetClass(h) +'] [' + GetText(h) +'] [' +
gettextm(h) +']';
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift:
TShiftState; X, Y: Integer);
var pt : tpoint;
begin
 dr := false;
 pt := clienttoscreen (point (x,y));
 h := windowfrompoint (pt);
 htt := h;
 if H = 0 then exit;
 m.lines.add ('----- PARENT '+inttostr (0)+' -----');
 m.lines.add ('Class name      : "'+GetClass(H) +'"' );
 m.lines.add ('Window Text     : "'+GetText(H) +'"' );
 m.lines.add ('Text by Message : "'+GetTextM(H) +'"' );
 m.lines.add ('Handle          : '+inttostr(H));
 m.lines.add ('Placement       : '+RSTRH(H));
 caption := application.title;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 inc (i);
 htt := getparent (htt);
 if htt = 0 then exit;
 m.lines.add ('');
 m.lines.add ('----- PARENT '+inttostr (i)+' -----');
 m.lines.add ('Class name : "'+GetClass(htt) +'"' );
 m.lines.add ('Window Text : "'+GetText(htt) +'"' );
 m.lines.add ('Text by Message : "'+GetTextM(htt) +'"' );
 m.lines.add ('Handle : '+inttostr(htt));
 m.lines.add ('Placement       : '+RSTRH(H));
end;
function TForm1.GetClass(WH: THandle): string;
var cname : array[0..100] of char;
begin
 getclassname(wh,cname,100);
 result := cname;
 if wh = 0 then result := '';
end;
function TForm1.GetText(WH: THandle): String;
var cname : array[0..100] of char;
begin
 getwindowtext(wh,cname,100);
 result := cname;
 if wh = 0 then result := '';
end;
function TForm1.GetTextM(WH: THandle): string;
var ch : array[0..100] of char;
begin
 ch[0] := #0;
 sendmessage (h,wm_gettext,100,integer(@ch));
 result := ch;
 if wh = 0 then result := '';
end;
function TForm1.PTSTR(p: tpoint): string;
begin
 result := 'X : '+inttostr(p.x)+ ' Y : '+inttostr(p.y);
end;
function TForm1.RSTR(r: trect): string;
begin
 result := 'Left : '  +inttostr(r.left)+
           ' Top : '   +inttostr(r.top)+
           ' Width : '  +inttostr(r.right-r.left)+
           ' Height : ' +inttostr(r.bottom-r.top);
end;
function TForm1.RSTRH(WH: thandle): string;
var rr : trect;
begin
 getwindowrect (wh,rr);
 result := rstr (rr);
end;
procedure TForm1.mMouseMove(Sender: TObject; Shift: TShiftState; X,Y:
Integer);
begin
 m.SetFocus;
end;
VAR SS : TStringList;
Function X (hwnd : hwnd; lparam : lparam) : bool;stdcall;
begin
 result := true;
 SS.add ('      HANDLE '       +inttostr (hwnd)      + '      ');
 SS.add ('Class name : "'      +form1.GetClass(hwnd) + '"' );
 SS.add ('Window Text : "'     +form1.GetText(hwnd)  + '"' );
 SS.add ('Text by Message : "' +form1.GetTextM(hwnd) + '"' );
 SS.add ('Placement       : '  +form1.RSTRH(hwnd));
 SS.add ('');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 SS := TStringList.Create;
 EnumWindows ( @X, 0 );
 h := 0; htt := 0;
 m.lines.clear;
 m.lines.Text := SS.text;
end;
end.

 ad esempio di Internet Explorer o di WinAmp....
Ciao. Ultimamante sto vedendo molte domande in proposito, così ho pensato
di inviare come allegato un progettino che avevo fatto per ricavare un bel
po' di informazioni
sugli handle, sulle classi ecc...
Istruzioni :
1.cliccare e tenere premuto il tasto sinistro del mouse ... spostarlo sullo
schermo sulla finestra
di cui si vogliono conoscere i dettagli.
2. get parent : ritorna le informazioni sull'handle del genitore dell'ultimo
handle trovato.
3. lista : Informazioni sulla lista fatta con EnumWindows.
Spero di aver contribuito almeno un po' (pochettino ... va bene ?) alla
crescita del newsgroup... 3:)---
Ciao a tutti !!! Davide DG.