Google chrome extension 如何通过C/C+打开包含Chrome扩展名的文件+;?

Google chrome extension 如何通过C/C+打开包含Chrome扩展名的文件+;?,google-chrome-extension,npapi,firebreath,Google Chrome Extension,Npapi,Firebreath,我正试图在我的Chrome扩展名中打开一个要解析的文件,比如“config.txt” 通过Javascript,这将相当容易。例如:chrome.extension.getURL('config.txt')将获得类似于chrome的内容-extension://kfcphocilcidmjolfgicbchdfjjlfkmh/config.txt 但是,在扩展名的C++(或C)代码中,通过这种URL打开文件是不可用的 在这种情况下,有没有办法打开扩展名为的文件?有两种方法可以解决这个问题;第一种

我正试图在我的Chrome扩展名中打开一个要解析的文件,比如“config.txt”

通过Javascript,这将相当容易。例如:
chrome.extension.getURL('config.txt')
将获得类似于
chrome的内容-extension://kfcphocilcidmjolfgicbchdfjjlfkmh/config.txt

但是,在扩展名的C++(或C)代码中,通过这种URL打开文件是不可用的


在这种情况下,有没有办法打开扩展名为的文件?

有两种方法可以解决这个问题;第一种方法是简单地使用javascript获取路径,然后通过方法调用将其传递到插件中

第二种方法是获取plugin.dll文件的路径,然后计算config.txt相对于该文件的位置

我认为另一种选择是尝试使用:

m_host->getDOMWindow()->getNode("chrome")->getNode("extension")->getNode("getURL")->callMethod<FB::variant>("", FB::variant_list_of("config.txt");
m_host->getDOMWindow()->getNode(“chrome”)->getNode(“扩展”)->getNode(“getURL”)->callMethod(”,FB::variant_list_of(“config.txt”);

我不知道这是否真的有效;我没有尝试过,甚至可能输入了一些函数调用,但这可能值得一试。

我终于找到了通过XmlHttpRequest在我的NPAPI插件中获取“config.txt”的方法

const char* getconfig =
" window.__config_txt__ = (function() {"
"     var ret = \"Default return value\";"
"     var xhr = new XMLHttpRequest();"
"     xhr.open(\"GET\", \"config.txt\", false);"
"     xhr.onreadystatechange = function() {"
"       if(xhr.readyState == 4) {"
"         ret = xhr.responseText;"
"       };"
"     };"
"     xhr.send();"
"     return ret;"
" })();";
m_host->evaluateJavaScript(getconfig);

if (window && window->getJSObject()->HasProperty("window")) {
    std::string content = window->getProperty<std::string>("__config_txt__");
}
const char*getconfig=
“窗口。\uuuu配置\utxt\uuuu=(函数(){”
“var ret=\”默认返回值\“;”
“var xhr=new XMLHttpRequest();”
xhr.open(\“GET\”,\“config.txt\”,false)
“xhr.onreadystatechange=函数(){”
“如果(xhr.readyState==4){”
“ret=xhr.responseText;”
"       };"
"     };"
“xhr.send();”
“返回ret;”
" })();";
m_host->evaluateJavaScript(getconfig);
如果(窗口和窗口->getJSObject()->HasProperty(“窗口”)){
std::string content=window->getProperty(“\uuuuu config\uu txt\uuuuuu”);
}

C++?你是在问NPAPI吗?是的,NPAPI。我通过FireBreath创建了这个NPAPI插件。谢谢Taxilian。我担心在Chrome扩展中,我们无法获得文件的真实路径,这是那些打开的文件函数所要求的。好吧;好吧,你仍然可以获得插件的路径并发现它是相对的。不管怎样,我很高兴你找到了一些东西出来