Получение сообщения в C# из расширения Chrome через собственный обмен сообщениями
Я пытаюсь получить активный заголовок вкладки, а также URL-адрес из Google Chrome. Я установил расширение Chrome вручную и создал консольное приложение для получения заголовка активной вкладки и url-адреса.
Прежде всего, я установил расширение Chrome, которое содержит файл, такой как manifest.json, background.js и popup.html-да. Ниже приведен мой код.
background.js
var port = chrome.runtime.connectNative('com.example.native'); function onActivate(activeInfo) { chrome.tabs.get(activeInfo.tabId, MyCurrentTab); } function getUrl(title, url) { var o = { title: title, url: url }; try { port.postMessage(o); } catch(err) { port = chrome.runtime.connectNative('com.example.native'); port.postMessage(o); } } function MyCurrentTab(tab) { getUrl( tab.title, tab.url ); } chrome.tabs.onActivated.addListener(onActivate);
манифест.в JSON
{
"имя": "watchURL",
"описание": "значение активной кром адрес",
"версия": "2.0",
"разрешения": [
"вкладки",
"nativeMessaging"
],
"фон": {
"скрипты": ["background.js"],
"настойчивый": ложь
},
"browser_action": {
"default_title": "активный url читается",
"default_popup": "popup.html"
},
"manifest_version": 2
}
Затем я создал файл host native json для собственного обмена сообщениями. Ниже приведен код.
{
"имя": "com.example.native",
"описание": "встроенная поддержка расширения Chrome",
"путь": "ChromeExt.exe",
"тип": "stdio",
"allowed_origins": [
"chrome-расширение://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/"
]
}
После этого я создал запись реестра для собственных сообщений с тем же именем (com.example.native).
Ниже приведен код консольного приложения C# ,
private static string OpenStandardStreamIn() { //// We need to read first 4 bytes for length information Stream stdin = Console.OpenStandardInput(); int length = 0; byte[] bytes = new byte[4]; stdin.Read(bytes, 0, 4); length = System.BitConverter.ToInt32(bytes, 0); string input = ""; for (int i = 0; i < length; i++) { input += (char)stdin.ReadByte(); } return input; }
Я сохранил файл Native host json и файл C# application .exe в папке system32. Но когда я собираюсь открыть www.google.com или тогда www.yahoo.com в браузере chrome ничего не происходит. Я также написал код для дампа файла внутри этого приложения C# , но безуспешно.
Я опубликую свое расширение позже в google store, как только оно будет успешно выполнено вручную.
Теперь мой вопрос заключается в том, как мне нужно выполнить это консольное приложение и получить заголовок и URL-адрес из расширения Chrome.
Что мне теперь делать? Пожалуйста, помогите мне в этом отношении.
Любая помощь будет высоко оценена.
BillWoodruff
- То, что я должен сделать сейчас." Я бы определенно провел некоторое время на форумах разработчиков Google/Chrome: очень вероятно, что у кого-то еще была такая же проблема.
Tutun2014
Я сделал это только после того, как проследовал по ссылкам форума и заметкам разработчика расширения Chrome. Поскольку я не являюсь экспертом в этой области, я написал подробно, чтобы помочь вам понять, не упустил ли я что-то или я правильно описал все шаги, но, возможно, произошла какая-то ошибка, и мне нужно ее отладить.