电竞比分网-中国电竞赛事及体育赛事平台

分享

用鼠標(biāo)獲取任意窗口的句柄, 并把它當(dāng)作"干兒子"

 獨(dú)孤求財(cái) 2012-03-30
首先建議初學(xué)者不要在這些小的技巧上下太多功夫, 學(xué)好基礎(chǔ)才是根本;
我的博客上這種東西不多, 這是大家討論時(shí), 話(huà)趕話(huà)趕出來(lái)的, 知道有這種可行性即可, 沒(méi)有多少實(shí)用價(jià)值.

本例效果圖:



此例回復(fù)來(lái)賓在
http://www.cnblogs.com/del/archive/2008/02/26/1081644.html 碰到的問(wèn)題.

全部代碼如下(測(cè)試時(shí)注意給主窗體焦點(diǎn)):
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{這里主要是設(shè)置控件位置}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Align := alTop;
  Panel1.Height := 30;
  Edit1.Top := 4;
  Edit1.Left := 12;
  Edit1.Width := 72;
  Edit1.Clear;
  Button1.Top := Edit1.Top - 1;
  Button1.Left := Edit1.Left + Edit1.Width + 12;
  Button1.Caption := '確認(rèn)捕獲, 用回車(chē)鍵';
  Button1.Width := Canvas.TextWidth(Button1.Caption) + 32;
  Button1.Default := True;
  Button2.Top := Button1.Top;
  Button2.Left := Panel1.ClientWidth - Button2.Width - 12;
  Button2.Anchors := [akRight];
  Button2.Caption := '過(guò)來(lái)吧你';
  Timer1.Interval := 100;
end;

{捕獲窗口句柄, 顯示在標(biāo)題}
procedure TForm1.Timer1Timer(Sender: TObject);
var
  pt: TPoint;
begin
  if Boolean(GetCursorPos(pt)) then
    Text := IntToStr(WindowFromPoint(pt));
end;

{把確認(rèn)的目標(biāo)窗口的句柄顯示在 Edit1}
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := Self.Text;
end;

{捕獲了干什么呢? 譬如讓它當(dāng)自己的"干兒子"吧}
procedure TForm1.Button2Click(Sender: TObject);
var
  h: HWND;        {這是被捕捉窗口的句柄}
  r: TRect;       {這是被捕捉窗口的矩形}
  pw,ph: Integer; {這是被捕捉窗口的寬度與高度}
begin
  h := StrToInt(Edit1.Text);
  Windows.SetParent(h, Self.Handle);
  GetWindowRect(h,r);
  pw := r.Right - r.Left;
  ph := r.Bottom - r.Top;
  MoveWindow(h, 0, Panel1.Height, pw, ph, True);
end;

end.

發(fā)現(xiàn)還沒(méi)處理計(jì)算器的關(guān)閉呢, 用處不大, 不再重做了.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多