如何通过C/C++打开Chrome扩展程序中包含的文件?

发布于 2024-12-18 20:16:24 字数 300 浏览 1 评论 0 原文

我正在尝试在 Chrome 扩展程序中打开一个要解析的文件,例如“config.txt”。

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

但是,在扩展的 C++(或 C)代码中,无法通过这种 URL 打开文件。

在这种情况下有什么方法可以打开扩展名的文件吗?

I'm trying to open a file to parse, say "config.txt", in my Chrome extension.

By Javascript it will be fairly easy. For example: chrome.extension.getURL('config.txt') will get something like chrome-extension://kfcphocilcidmjolfgicbchdfjjlfkmh/config.txt.

However, in the C++(or C) code of the extension, open a file by this kind of URL is not available.

Is there any way to open a file in extension in this case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぽ尐不点ル 2024-12-25 20:16:24

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

第二种是获取插件 .dll 文件的路径,然后计算 config.txt 相对于该文件的位置 如网站上所述

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

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

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

There are two ways you could address this; the first is to simply use javascript to get the path and then pass it into the plugin in a method call.

The second is to get the path to the plugin .dll file and then calculate the location of config.txt relative to that as explained on the website.

I suppose the other option would be to try to use:

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

I don't know if that would actually work or not; I haven't tried it, and I may have even mistyped some of the function calls, but it might be worth a try.

东风软 2024-12-25 20:16:24

我终于找到了一种通过 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__");
}

I finally managed to find a way to get the "config.txt" in my NPAPI plugin by XmlHttpRequest.

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__");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文