Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何重新租一扇可可窗?_Cocoa - Fatal编程技术网

Cocoa 如何重新租一扇可可窗?

Cocoa 如何重新租一扇可可窗?,cocoa,Cocoa,我需要将我的窗口托管在另一个应用程序的窗口上。 如何枚举另一个Cocoa应用程序的窗口?可以控制吗 他们? 如果否:如何在另一个应用程序的窗口上绘图? 谢谢 如何枚举另一个Cocoa应用程序的窗口 您可以使用辅助功能API枚举另一个应用程序的窗口。该应用程序是否为Cocoa并不重要 有可能控制它们吗 在这里,应用程序是否为Cocoa(或使用标准控件的Carbon)是间接重要的。更准确地说,应用程序是否可访问很重要 通常可以移动另一个窗口,调整其大小,或使用其中的控件(如按钮)执行简单操作 无法将

我需要将我的窗口托管在另一个应用程序的窗口上。 如何枚举另一个Cocoa应用程序的窗口?可以控制吗 他们? 如果否:如何在另一个应用程序的窗口上绘图? 谢谢

如何枚举另一个Cocoa应用程序的窗口

您可以使用辅助功能API枚举另一个应用程序的窗口。该应用程序是否为Cocoa并不重要

有可能控制它们吗

在这里,应用程序是否为Cocoa(或使用标准控件的Carbon)是间接重要的。更准确地说,应用程序是否可访问很重要

通常可以移动另一个窗口,调整其大小,或使用其中的控件(如按钮)执行简单操作

无法将一个窗口与另一个应用程序中的窗口进行磁带连接。当其他窗口移动时,您必须观察其位置并移动窗口。以这种方式进行实时拖动是不可能的

如果否:如何在另一个应用程序的窗口上绘图

你不能。您只能在自己的窗口中绘制

您可以创建一个透明的覆盖窗口并在其上绘制,但这会让您回到将一个窗口粘贴到另一个应用程序中的窗口的问题


您可能应该问一个更广泛的问题,即您希望通过将一个窗口粘贴到另一个应用程序中的窗口或通过在另一个应用程序中的窗口中绘图来实现什么。Cocoa不支持重新复制另一个应用程序窗口或在其上绘图

但是,有两种方法可以获取所有应用程序的windows属性,如位置、大小、z顺序等

  • (还允许控制外部应用程序窗口:移动、调整大小、按下按钮等)。如果外部应用程序不支持辅助功能API,则
  • 以及它们的示例代码,称为“”
  • 签出CGWindow.h


    CGWindowListCreateDescriptionFromArray()可能就是您要找的。

    谢谢您,Peter!我会提出一个建议:我可以这样布置我的无边界窗口,以便它能够精确地显示在另一个活动窗口的某个位置(我指的是从左上角确定的x和y坐标),我在回答的第二个三分之一中回答了这个问题。这两种解决方案都不能真正将一个窗口固定到另一个窗口;可访问性API在发生拖动时不提供实时更新,石英窗口服务根本不提供任何类型的窗口移动或调整大小通知。是的,这是石英窗口服务的一部分。