精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>鼠标>>用鼠标取得其他窗口句柄

主题:用鼠标取得其他窗口句柄
发信人: delfan( )
整理人: teleme(2001-04-18 08:39:35), 站内信件
前一阵有个网友提的问题,好象一直都没有解决。今天翻看API的时候,看到SetCapTure,想起这个问题。在此先和那位网友说声对不起。

窗体上放置一个button,一个edit,代码如下,注意每次取之前都要先点一下button.
原理见程序中注释。

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
    setcapture(handle);      // 设置捕获鼠标输入
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var point : TPoint;
    hwnd : THandle;
begin
    point.x := x;
    point.y := y;
    point := ClientToScreen(point);  // 客户区坐标转换到屏幕坐标
    hwnd := WindowFromPoint(point);  // 取鼠标点击的窗体句柄
    ReleaseCapture;                  // 终止捕获鼠标输入
    if hwnd=handle then edit1.text := '没有点击其他窗体!'
    else
        edit1.Text := inttostr(hwnd);
end;

end.



----
            o
          O                      
   /-----||---\                                        
  /------------\  不是俺家......
   | ___   日 |      
   |_|_|______|      VvVvVv
                         
                                            

[关闭][返回]