Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ButtonID (https://www.delphipraxis.net/462-buttonid.html)

Frankle 25. Jul 2002 16:28


ButtonID
 
Hallo!
Weiß jemand wie ich an die ButtonID von einem Button eines fremden Fensters komme?
Vielleicht gehts ja mit WinSight..ich habs nua leider nix in der richtung gefunden.
Denn das Handle ändert sich ja immer...

jbg 25. Jul 2002 16:34

Bei WinSight einen Doppelklick auf den Button und sich dann die Fenster-ID merken. Diese entspricht deiner ButtonID.

Frankle 25. Jul 2002 16:51

Also..da stehen bei mir immer nur Nullen
Kann mir jemand sagen wo ich Spy++ oda sowas ähnliches herbekomm? Vielleicht hilft mir das

jbg 25. Jul 2002 17:42

Dann wird dieser Button wohl auch keine ID habe, sondern nur ein Handle.
Du könntest über EnumChildWindows mit bestimmten Kriterien wie z.B. die Caption des Buttons das aktuelle Handle des Buttons ermitteln.

Christian Seehase 25. Jul 2002 19:23

Moin Frankle,

wenn's Dir nur um die ID geht, kannst Du es hiermit versuchen:

Code:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, StdCtrls;

type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    Edit4: TEdit;
    procedure SpeedButton1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1       : TForm1;

implementation

{$R *.DFM}

procedure TForm1.SpeedButton1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

var
  ptCursor    : TPoint;
  hWindow     : DWord;

begin
  repeat
    Application.ProcessMessages;
    GetCursorPos(ptCursor);
    hWindow := WindowFromPoint(ptCursor);
    Edit4.Text := IntToStr(GetWindowLong(hWindow,GWL_ID));
  until GetAsyncKeyState(VK_LBUTTON) = 0;
end;

end.
Nur mit der linken Maustaste den Button anklicken, Taste gedrückt halten, und dann mit dem Cursor auf das fragliche Control gehen.
Erhältst Du keine ID (=0), ist es auch kein herkömmlicher Button.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr.

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