2011-12-01 3 views
0

내 Chrome 확장 프로그램에서 "config.txt"라고 구문 분석 할 파일을 열려고합니다.C/C++에서 Chrome 확장 프로그램에 포함 된 파일을 여는 방법은 무엇입니까?

자바 스크립트로 작성하면 상당히 쉽습니다. 예 : chrome.extension.getURL('config.txt')chrome-extension://kfcphocilcidmjolfgicbchdfjjlfkmh/config.txt과 같은 값을 갖습니다.

그러나 확장의 C++ (또는 C) 코드에서이 종류의 URL로 파일을 열 수는 없습니다.

이 경우 확장자로 파일을 여는 방법이 있습니까?

+0

C++? NPAPI에 대해 묻고 있습니까? –

+0

예, NPAPI. FireBreath를 통해이 NPAPI 플러그인을 만들었습니다. – Deqing

답변

0

마지막으로 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__"); 
} 
0

이 문제를 해결할 수있는 방법은 두 가지가 있습니다. 첫 번째는 단순히 javascript를 사용하여 경로를 가져온 다음 메소드 호출의 플러그인에 전달하는 것입니다.

두 번째는 플러그인 .dll 파일의 경로를 얻은 다음 해당 파일의 as explained on the website에 상대적인 config.txt의 위치를 ​​계산하는 것입니다.

나는 다른 옵션을 사용하려고하는 것입니다 가정 :

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

을 그 실제로 일을하거나하지 않을 경우 나도 몰라; 나는 그것을 시도하지 않았고 일부 함수 호출을 잘못 입력했을 수도 있지만 시도해 볼만한 가치가있을 수 있습니다.

+0

감사 세일. Chrome 확장 프로그램에서 열려있는 파일 기능에 필요한 파일의 실제 경로를 가져올 수 없습니다. – Deqing

+0

좋습니다. 글쎄, 당신은 여전히 ​​플러그인의 경로를 얻을 수 있고 그것을 상대적으로 찾았습니다. 어느 쪽이든, 당신이 뭔가를 알아 낸 것을 기쁘게 생각합니다. – taxilian