私はCocoaアプリケーション(.app)を持っていますが、別のCocoaアプリケーションから起動したいと思いますが、ここで問題はありませんが、多分main関数でargv []配列を使用していますか?ココアアプリケーション間でパラメータを渡す方法
答えて
NSWorkspaceを使ってアプリを起動し、NSDistributedNotificationCenterを使ってデータを渡しました。これは明らかに完全には開発されていませんが、うまくいきました。 docsの1つの警告 - 私が引数(この例では文字列)で送信した辞書は、サンドボックス化されたアプリケーションでは使用できません(辞書はゼロでなければなりません)。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
ws = [NSWorkspace sharedWorkspace];
NSNotificationCenter *center = [ws notificationCenter];
[center addObserver:self selector:@selector(poster:) name:NSWorkspaceDidLaunchApplicationNotification object:nil];
[ws launchApplication:@"OtherApp.app"];
}
-(void)poster:(NSNotification *) aNote {
NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"theDataToSend" forKey:@"startup"];
[center postNotificationName:@"launchWithData" object:nil userInfo:dict];
NSLog(@"Posted notification");
}
そして、これが開かれたアプリである:
これは、他のアプリ開きアプリである
-(void)awakeFromNib {
NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(doStartup:) name:@"launchWithData" object:nil];
を
}
-(void)doStartup:(NSNotification *) aNote {
NSLog(@"%@",aNote.userInfo);
}
どのように2番目のCocoaアプリを起動しますか?
私がこれをしたとき、私は通常NSAppleScript
でAppleScriptを使って他のアプリと通信します。そのようにアプリを起動することもできます。もちろん、他のアプリはAppleScriptをサポートする必要があります。
両方のアプリケーションを制御できる場合は分散オブジェクトを使用することもできますが、より複雑です。
コマンドラインプログラムで作業する必要がある場合は、NSTask
が便利です。
また、カスタムURLスキームを使用することができます。 – paulmelnikow
私はopenURLメソッドを使用しています。これは、アプリケーションを起動するためのeaiserの方法であり、うまくいきます。私があなたが言及した両方のアプローチを探しています。 – willyMon
- 1. hbsファイル間でパラメータを渡す方法
- 2. vbaとvbの間でパラメータを渡す方法
- 3. 反応の異なるコンポーネント間でパラメータを渡す方法
- 4. XAMLページ間で値(パラメータ)を渡す方法は?
- 5. Request-Scoped Controllers間でパラメータを渡す方法は?
- 6. 方法:インターフェイスビルダエントリポイントがないブランクのココアアプリケーション
- 7. Dapperでnullパラメータを渡す方法
- 8. Yii2 - イベントでパラメータを渡す方法
- 9. onClickイベントバインドでパラメータを渡す方法は?
- 10. Crystal Reportsでパラメータを渡す方法は?
- 11. railsメソッドでパラメータを渡す方法は?
- 12. はStream.mapメソッドでパラメータを渡す方法
- 13. Crystal Reportでパラメータを渡す方法
- 14. DreddでURIパラメータを渡す方法
- 15. 関数オブジェクトリテラルでパラメータを渡す方法
- 16. link_toでパラメータを渡す方法
- 17. JSパラメータでASP.NETサーバーサイドタグを渡す方法
- 18. JavaScriptでパラメータ名を渡す方法は?
- 19. minitestでパラメータを渡す方法
- 20. 角度キャッチブロックでパラメータを渡す方法
- 21. Sql commandTextでintパラメータを渡す方法
- 22. SSISパラメータで変数を渡す方法
- 23. jqueryでphpパラメータを渡す方法
- 24. mdxクエリでパラメータを渡す方法
- 25. Msal.UserAgentApplicationメソッドでdomain_hintパラメータを渡す方法
- 26. where句でパラメータを渡す方法は?
- 27. Windows間のパラメータを渡す
- 28. C++パラメータを渡す(ヘッダ間)
- 29. 渡す方法のパラメータは
- 30. フラスコ@app.route( '/ page')の間でパラメータを渡す
分散通知をスプーフィングするのは簡単です。どのプロセスでも、どのデータでも1つを転記することができます。安全な何かのためにそれらに頼らないでください。 –
その情報をありがとうKurt。これを行うより安全な方法について何をお勧めしますか? – rdelmar
残念ながら、解決するのは簡単な問題ではありません。他にはそれほど便利ではありません。おそらく、UNIXドメインソケットや名前付きパイプを試してみてください。 10.7が必要な場合はXPC。あなたは、あなたと話している他のアプリがあなたが誰だと思っているかを確認しなければなりません。本当にその周りには何の方法もありません。 –