2017-05-15 1 views
0

私はMac applicationのためのプラグインを作っています。私はプラグインを使いやすくするために、「添付」 UI要素をアプリケーションのウィンドウに表示したいと思います。悲しいことに、アプリケーションにはこの機能をネイティブに許可するAPIがないため、私自身で技術を開発しなければなりません。ボタンは他のプロセスのウィンドウにどのように 'アタッチ'しますか?

伝統的にWindows OSでは、コントロールを含む枠なしのウィンドウでSetParent()を使用します。しかし、Macではそのような機能が存在しないことを理解しています。

しかし、これは私に少しのジレンマを残します。この目標を達成するために私が使用できる代替手段を誰かが知っていますか?

+0

プラグインは何をしますか?一般に、アクセシビリティAPIを使用して他のアプリケーションとやり取りします。 –

+0

ほとんどの場合、UIオートメーションを使用して、アプリケーションの特定の機能を自動化します。また、ビデオクリップを逆転するなどの特定の機能を追加します。私はこれにもUIオートメーションを使用しなければならないと思います。汚れているものは他にありません... – Sancarn

+0

[これは役立つかもしれません](http: /idevapps.com/forum/showthread.php?tid=1791)また、[this](http://stackoverflow.com/questions/5286274/front-most-window-using-cgwindowlistcopywindowinfo) – Sancarn

答えて

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 
} 

Thats all:Dこれは、アプリケーションがこの機能をプラグインに送信する場合にのみ機能します。

希望:

+0

この機能をプラグインに送るようにアプリケーションに指示する方法はないと思いますか? – Sancarn

+0

もしアプリケーションがカスタムアプリケーションではない場合は、最初にプラグインをロードする方法をどのように知っていますか? – Lucasware

+0

プラグインは主にUIオートメーションを使用します。それで、それは決してそれ自体で「積み込まれる」ことはありません – Sancarn

関連する問題