在其他应用程序窗口上创建按钮

发布于 2024-11-16 07:15:12 字数 403 浏览 13 评论 0原文

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

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

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

我记得我在 Windows XP 上使用此代码并且它工作没有问题,但现在在 Windows 7 中创建的按钮不会出现。

I wrote below code to create an extra button on Calculator, but the button don't show:

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

I get the controls on the calculator after running the above code using EnumChildWindow API function and see the created button in control list that EnumChildWindow returns, but why does the created button not show ?

As I remember I use this code on windows XP and it works without problem but now in windows 7 the created button doesn't appear.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

临走之时 2024-11-23 07:15:12

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

编辑:
使您的代码适用于本机
应用程序你可以使用这样的代码:

hand := FindWindow('TForm1','Form1');
object1 := TButton.Create(self);
object1.ParentWindow := hand;

calculator and Paint in Win7 are
rebuilt using .NET and WPF, and
there is no way to "contact" with
.NET code through native code
especially WPF which use different
way to paint its controls.

edit:
to make your code work for native
applictions you can use code like this:

hand := FindWindow('TForm1','Form1');
object1 := TButton.Create(self);
object1.ParentWindow := hand;
避讳 2024-11-23 07:15:12

您必须将 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;

you must make 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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文