如何将一个按钮“附加”到另一个进程的窗口?

时间:2017-05-15 19:25:47

标签: objective-c swift macos cocoa

我正在制作Mac application的插件。我希望该插件易于使用,所以我想'附加' UI元素到应用程序的窗口。遗憾的是,该应用程序没有允许本机功能的API,所以我必须自己开发一种技术。

传统上在Windows操作系统上,我会使用SetParent()和包含控件的无边框窗口。但是在Mac上我明白这样的功能不存在。

然而,这让我陷入了两难境地。有没有人知道我可以用哪种方法来实现这个目标呢?

1 个答案:

答案 0 :(得分:0)

您可以向插件添加一个需要插入目标窗口的函数,然后可以使用该插件将对象添加到输入窗口,例如。

- (void)addObjectToWindow:(NSWindow *)theWindow {
    if (!theWindow) {return;} // Exits if the window is nil
    NSButton *addButton = [[NSButton alloc] initWithFrame:NSMakeRect(10, 10, 30, 100)]; // modify the NSMakeRect numbers to change the size and position of the button
    [addButton setTitle:@"Button Title"]; // Sets the button text
    [[theWindow contentView] addSubview:addButton]; // Adds the button to the Windows view
}

多数民众赞成:D,这只有在应用程序将此功能发送到插件时才会起作用。

希望这有助于:)