私は自分のビューに別のアプリケーションを埋め込む方法を探しています。OS Xサブビュー内でアプリケーションをネストする
ビジネス上の理由は、同社がOS Xプログラムの中に埋め込みたい、多くの小さなElectron apps(基本的には内蔵のブラウザを備えた小型ポータブルウェブプログラム)を持っているということです。これらのElectronアプリは、理想的には、サブビュー内でシームレスに統合して表示するので、大きなプログラム内では小さなWebフレームのように見えます。
私はプログラマチックに別のプログラムをサブビューとして開くのが最も簡単だと思いますが、私が得ることができるものはすべて取っていきます。 NSWindowを何とかキャプチャすることさえあるかもしれません。 (Electron source is available so it is easily discoverable。)たぶん私の中に他のプログラムをドッキングする方法、または(もっと必死になって)そのビューを見つけて、私の上にそのサイズと位置を制約するコマンドを送る方法です。
これまでのところ私が見つけたのは、実際には可能ではないということです。私は私がもっと絶望的なコースを取ることができることを発見しました。私は、プロセスを起動し、そのビューを見つけて、ディスプレイ上の場所に配置することができます。ウィンドウが移動されたり、コンテンツがスクロールされたりすると、別のウィンドウを移動するためのメッセージが送信されます。しかし、それは本当に統合されていない、メニューは別々のままですが、私はそれを組み込むことはできません。
アイデアや有用な実装の詳細はありますか?
編集1:これらの応答に感謝します。私たちが電子アプリにNSWindowを何とか公開させることができたらどうでしょう?それを活用することができますか?私は、アプリケーションがメッセージを送信し、(何とか、正確にはわからない)この内部の親ウィンドウを設定できると思っています。 Windows APIでは、SetParentを何か(たとえば、異なるプロセス内の項目さえ)でも呼び出すことができるので、はるかに簡単です。しかし、ココアはもっと難しいようです。
この回答のいくつかの部分は間違いなく正しいです。 NSApplicationの複数のインスタンスをスレッドで実行することはできません.NSEventには、私が認識しているアプリケーションはありません。 – duskwuff
@duskwuffスレッドでNSApplicationインスタンスを作成するという意味ではなく、私の答えを更新しました。 NSEvent私はあなたがグローバルにマウスイベントをキャプチャできることを覚えていますが、私が確信していないことをどのくらい正確に使うのでしょうか? – PnotNP
fork/execを使って新しいプロセスを開始すると、OPは既に、彼らのニーズに十分)。 – duskwuff