2016-07-12 4 views
1

Gtkアプリケーションを使用することで、プログラムの複数インスタンスを防ぐことができます。GTkアプリケーションのプライマリからリモートへのインスタンス通信

Gtkアプリケーションの作成中にGio.ApplicationFlags.HANDLES_COMMAND_LINEが有効な場合、リモートインスタンスからコマンドパラメータをプライマリインスタンスに送信することは可能です。

これにより、コマンドラインから同じGtkアプリケーションを送信します。これはかなり素晴らしいです。

しかし、問題があります。リモート/通常のインスタンスに情報を戻す方法はありますか。コマンドラインからクエリを実行している間に表示することができます。リモートインスタンスはプライマリインスタンスを検出した直後に終了するためです。

私はpythonを使用しています。

+0

死ぬ前に2番目のアプリケーションが最初のアプリケーションにデータを送信できるかどうか尋ねていますか? – oldtechaa

+0

@oldtechaa新しいインスタンスはすべてプライマリインスタンスをチェックし、コマンドラインパラメータをプライマリインスタンスに送信します。それ以降に問題が発生し、タスクはプライマリインスタンスによって処理されます。プライマリインスタンスからリモート/通常のインスタンスにフィードバックメッセージが必要なので、ユーザーは困惑しません。 – rho

答えて

0

はい、おそらくあなたのやり方ではないので、扱いにくいでしょう。このアプローチはうまくいくはずですが、私はそれを試していません。

リモートインスタンスから呼び出すメソッドをDBusメソッドとして公開する必要があります。次に、do_local_command_line() vfuncを上書きします。これは、リモートインスタンスがコマンドラインから起動されたときに呼び出され、コマンドライン引数がプライマリインスタンスに渡される前に処理されます。それらをプライマリ・インスタンスに渡す代わりに、それらを引数の配列から削除します。プライマリ・インスタンスでDBusメソッドを呼び出し、応答を待ってからdo_local_command_line()ファンクションから戻ってください。

関連する問題