有个问题想和你讨论一下,就是下面这段代码:
procedure TForm1.Button1Click(Sender: TObject);
var
f1:longint;
begin
f1:=GetForegroundWindow;
//f1:=getdesktopwindow;
caption:=IntToStr(f1);end;
在这个Button1.CLICK过程中,F1得到的值永远都是这个BUTTON1所在窗口的HANDLE,我想点一下桌面上的任意一个窗口后,再来点击这个BUTTON1,就能得到HANDLE,能实现吗?该怎么办呢?
procedure TForm1.Button1Click(Sender: TObject);
var
f1:longint;
begin
f1:=GetForegroundWindow;
//f1:=getdesktopwindow;
caption:=IntToStr(f1);end;
在这个Button1.CLICK过程中,F1得到的值永远都是这个BUTTON1所在窗口的HANDLE,我想点一下桌面上的任意一个窗口后,再来点击这个BUTTON1,就能得到HANDLE,能实现吗?该怎么办呢?
那就得了,得到的当前窗口句柄就是BUTTON1的句柄了!
你可以这样:
procedure TForm1.Timer1Timer(Sender: TObject);
var
f1:longint;
begin
f1:=GetForegroundWindow;
//f1:=getdesktopwindow;
caption:=IntToStr(f1);
end;
解决的办法很容易的,你自己应该能办到的。
procedure TForm1.Button1Click(Sender: TObject);
var
f1:longint;
begin
f1:=GetForegroundWindow;
//f1:=getdesktopwindow;
caption:=IntToStr(f1);end;
在这个Button1.CLICK过程中,F1得到的值永远都是这个BUTTON1所在窗口的HANDLE,我想点一下桌面上的任意一个窗口后,再来点击这个BUTTON1,就能得到HANDLE,能实现吗?该怎么办呢?"""
你在电击的时候,你的窗口当然处在最前边了,所以得到是自己的handle了,你可以写到timer事件里去,或者hook