Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用NSWorkspace获取已启动应用程序的进程ID_Objective C_Xcode_Macos_Command Line - Fatal编程技术网

Objective c 使用NSWorkspace获取已启动应用程序的进程ID

Objective c 使用NSWorkspace获取已启动应用程序的进程ID,objective-c,xcode,macos,command-line,Objective C,Xcode,Macos,Command Line,我很难在应用程序中获取已启动文件的pid。我想我快到了,但我一直得到一个空值: [sharedWorkspace openFile:@"/Users/abs/Documents/my.txt" withApplication:@"TextEdit"]; NSDictionary * currentAppInfo = [sharedWorkspace activeApplication]; int pid = [[currentAppInfo objectForKey: @"NSAppl

我很难在应用程序中获取已启动文件的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应用程序。

如果您将应用程序作为命令行应用程序,那么您甚至可能不使用AppKit。您的项目中是否链接了AppKit.framework

[NSWorkspace openFile:withApplication:][/code>调用偶数是否有效

看看这个。我最喜欢的一句话是:

AppKit通常需要Windows服务器连接

要获取您启动的TextEdit的进程id(pid),我相信您必须尝试其他方法


当然,您知道,
[NSWorkspace-activeApplication]
从10.7开始就被弃用了,是吗?

假设您包含了Cocoa/AppKit框架; 您可以通过过滤TextEdit获取应用程序的进程ID,然后获取其属性

NSLog(@"%i", [[NSRunningApplication runningApplicationsWithBundleIdentifier: @"com.apple.TextEdit"] processIdentifier]);

(我现在不支持我的Mac,所以这是未经测试的)

NSLog(@“%@”,pid)
更改为
NSLog(@“%I”,pid)
对我来说确实有效。它给出了当前正在运行的应用程序的进程ID,而不是用来打开文件的那个。@Jef-Ah,我需要刚刚启动的应用程序的进程ID。我使用的是“#import”和“#import”。“NSWorkspace”是否可以在命令行应用程序中使用?还有什么其他选项允许我打开一个open并获取它的窗口进程id?切换到Cocoa应用程序,它就可以工作了。让一个空白窗口出现是很烦人的,但它确实起到了作用。我想你是对的,为了让它正常工作,你需要连接Windows服务器。谢谢。我也测试过这个,但它在命令行应用程序中不起作用。不过,它在Cocoa工作。