我有一個Cocoa應用程序(.app),我想從另一個Cocoa應用程序啓動它,這裏沒有問題,但有什麼方法可以啓動第二個應用程序傳遞它的一些參數嗎?也許在主函數中使用argv []數組?如何在可可應用程序之間傳遞參數
回答
我這樣做是使用NSWorkspace啓動應用程序和NSDistributedNotificationCenter來傳遞數據。這顯然沒有完全開發,但它的工作。文檔中的一個警告 - 我用參數發送的字典(本例中只是一個字符串)不能在沙盒應用中使用(字典必須爲零)。
這是在打開的其他應用程序的應用程序:
- (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);
}
你如何啓動第二個可可應用程序?
當我這樣做時,我通常通過NSAppleScript
使用AppleScript與其他應用程序進行通信。您也可以啓動應用程序。當然,其他應用程序必須支持AppleScript。
如果您可以控制這兩個應用程序,也可以使用分佈式對象,但它更復雜。
如果您曾經需要使用命令行程序,那麼NSTask
很有用。
您也可以使用自定義URL方案。 – paulmelnikow 2012-03-25 13:48:09
好吧我使用的方法openURL你知道這是eaiser的方式來啓動一個應用程序,它工作正常,我正在尋找你提到的兩種方法,非常感謝。 – willyMon 2012-03-25 18:50:42
- 1. 如何在rails應用程序之間傳遞參數?
- 2. 如何將參數傳遞給可可觸摸應用程序
- 3. 可可應用程序在控制器之間傳遞對象
- 4. 在AS400中的程序之間傳遞可選參數
- 5. 在父應用程序和OSGi框架之間傳遞參數
- 6. 在Objective-C應用程序之間傳遞參數
- 7. 如何在iOS和TvOS應用程序之間傳遞數據?
- 8. 如何在兩個Chrome應用程序之間傳遞數據?
- 9. 如何在進程/應用程序之間傳遞IntPtr
- 10. 在qt進程之間傳遞參數?
- 11. 如何在應用程序域之間傳遞事件?
- 12. 如何在活動之間傳遞「EditText」值Android應用程序
- 13. 如何在rails應用程序之間傳遞CSRF令牌
- 14. 在應用程序/進程之間傳遞數據
- 15. 可能通過NFC傳遞Android應用程序並傳遞參數
- 16. 在程序之間傳遞數組
- 17. 是否有可能在jQuery文件之間傳遞參數
- 18. 在客戶端應用程序和Web應用程序之間傳遞數據
- 19. 在VB6應用程序和.net應用程序之間傳遞數據
- 20. 傳遞對象/線程之間的數據可可
- 21. 是否可以在應用程序之間傳輸Heroku插件?
- 22. 在C++(MFC)應用程序和C#之間傳遞數據
- 23. 在兩個應用程序之間傳遞數據
- 24. 在網頁和VB應用程序之間傳遞數據
- 25. 在ASP.NET應用程序之間傳遞會話數據
- 26. 在兩個Azure應用程序之間傳遞數據
- 27. 在iPhone應用程序之間傳遞數據
- 28. 在MVVM WPF應用程序中的ViewModels之間傳遞數據
- 29. 快速在應用程序域之間傳遞大量數據
- 30. 在c#應用程序和C++ exe文件之間傳遞參數和返回
請注意,欺騙分佈式通知是微不足道的。任何進程都可以發佈任何數據。不要依賴他們的任何安全。 – 2012-03-25 21:17:40
感謝您的信息庫爾特。你有什麼建議以更安全的方式來做到這一點? – rdelmar 2012-03-25 21:21:28
不幸的是,這不是一個容易解決的問題。沒有別的東西幾乎如此方便。也許嘗試UNIX域套接字或命名管道。 XPC如果你可以要求10.7。您仍然必須確保與您交談的其他應用程序是您認爲的那個應用程序 - 實際上並沒有任何解決方法。 – 2012-03-25 21:34:08