我想检测我的基于npapi的插件是在进程外模式(浏览器处于64位模式)还是进程内模式(浏览器处于32位模式)下启动的。当前我使用以下代码来检测
NSString * processName = [[NSProcessInfo processInfo] processName];
if (processName)
{
if ( !([processName compare:@"Safari" options:NSCaseInsensitiveSearch] == NSOrderedSame)
&& !([processName compare:@"firefox" options:NSCaseInsensitiveSearch] == NSOrderedSame)
&& !([processName compare:@"firefox-bin" options:NSCaseInsensitiveSearch] == NSOrderedSame)
&& !([processName compare:@"Google Chrome" options:NSCaseInsensitiveSearch] == NSOrderedSame))
{
// out of process
}
}
如果浏览器的可执行文件名失败,则此代码将失败。还有另一种检查浏览器启动模式的方法吗?
答案 0 :(得分:1)
你的问题的前提是不正确的; “OOP”和“64位”不是等同的概念。 Chrome for Mac和Windows目前仅限32位,但始终会运行插件。像Firefox这样的基于Gecko的浏览器有隐藏的首选项来控制插件是否在进程中运行。
更重要的是:插件不应该关心它是在进程中还是在进程外运行;插件API不会改变。您实际上试图解决的问题是您认为需要了解这一点吗?