4

我写了下面的代码来在计算器上创建一个额外的按钮,但按钮不显示:

var
  Object1 : TButton ;
  Hand: THandle;
begin
   Hand:= FindWindow('CalcFrame', 'Calculator');
   Object1 := TButton.CreateParented(Hand);
   Object1.Show ;
end;

使用 EnumChildWindow API 函数运行上述代码后,我得到了计算器上的控件,并在 EnumChildWindow 返回的控件列表中看到创建的按钮,但为什么创建的按钮不显示?

我记得我在 Windows XP 上使用此代码,它可以正常工作,但现在在 Windows 7 中,创建的按钮不会出现。

4

2 回答 2

4

Win7中的计算器和Paint是使用.NET和WPF重建的,没有办法通过本机代码与.NET代码“联系”,尤其是WPF,它使用不同的方式来绘制控件。

编辑:要使您的代码适用于本机应用程序,您可以使用如下代码:

hand := FindWindow('TForm1','Form1');
object1 := TButton.Create(self);
object1.ParentWindow := hand;
于 2011-06-18T08:28:30.383 回答
0

你必须做Visible:= False

var
  Hand: THandle;
  Object1: TButton;
begin
  Hand:= FindWindow('TForm1', 'Form1');
  if Hand <> 0 then
  begin
    Object1:= TButton.CreateParented(Hand);
    Object1.Caption:= 'Test';
    Object1.Visible:= False ;
    Object1.Show;
  end;
end;
于 2016-08-21T13:13:53.630 回答