我很难在应用程序中获取已启动文件的pid。我想我差不多了,但我一直都是空的:
[sharedWorkspace openFile:@"/Users/abs/Documents/my.txt" withApplication:@"TextEdit"];
NSDictionary * currentAppInfo = [sharedWorkspace activeApplication];
int pid = [[currentAppInfo objectForKey: @"NSApplicationProcessIdentifier"] intValue];
NSLog(@"%@", pid); // (null), using @i, @u, @d I get 0
我在这里做错了什么?
这适用于在xcode 4.2中构建的commnand line应用程序。
答案 0 :(得分:2)
如果您将应用程序作为命令行应用程序运行,则可能甚至不使用AppKit。 AppKit.framework是否在您的项目中链接?
[NSWorkspace openFile: withApplication:]
调用是否有效?
查看此CocoaBuilder thread。一个引人注目的引用是:
AppKit通常需要窗口服务器连接。
要获取您启动的TextEdit的进程ID(pid),我相信您将不得不尝试别的。
当然你知道自{10}以来[NSWorkspace activeApplication]
被弃用了,是吗?
答案 1 :(得分:0)
假设您已经包含了Cocoa / AppKit框架; 您可以通过为TextEdit过滤NSWorkspace's runningApplications来获取应用的进程ID,然后获取其processIdentifier属性。
NSLog(@"%i", [[NSRunningApplication runningApplicationsWithBundleIdentifier: @"com.apple.TextEdit"] processIdentifier]);
(我现在不在我的Mac后面所以这是未经测试的)