Я разработал расширение хром Google, в котором используется связь с Native Messaging.Google chrome Расширение Собственный почтовый ящик, написанный на C#, не запускается при запуске компьютера
Ну ... расширение работает отлично, но проблема в том, что хост Native Messaging не запускается при запуске компьютера. Чтобы запустить его, я должен открыть chrome, расширения списка, найти расширение, а затем отключить и снова включить его.
Одна вещь, которую я понял. заключается в том, что когда я отключу и снова включу расширение и увижу диспетчер задач, я увидел, что запущены 3 процесса: chrome.exe, cmd и мой собственный хост exe.
Возможно, все три процесса не запускаются при запуске из-за команды «cmd»?
Почему команда cmd запускается вместе с встроенным средством обмена сообщениями exe? Как я могу избежать этого?
EDIT:
Это файл manifest.json:
{
"manifest_version": 2,
"name": "Busca Cliente Lipigas",
"short_name": "Busca Cliente",
"description": "Permite recibir un número de teléfono desde SoftPhone y realizar la búsqueda del cliente en la página Web de Lipigas.",
"version": "1.1",
"permissions": [
"tabs",
"background",
"nativeMessaging"
],
"icons" : { "16": "img/icon16.png",
"48": "img/icon48.png",
"128": "img/icon128.png" },
"background": {
"scripts": ["main.js"],
"persistent": false
}
}
EDIT:
Это фон страницы:
var clientSearchPage;
var clientEditPage;
var executed;
//console.log('Extensión iniciada.');
var port = chrome.runtime.connectNative('com.desytec.lipigas.sll');
port.onMessage.addListener(function (msg) {
//console.log("Se recibió el comando " + msg.command + ' con el parámetro ' + msg.parameter);
port.postMessage({ status: processCommand(msg.command + ' ' + msg.parameter) });
});
chrome.runtime.onSuspend.addListener(function() {
port.postMessage({ status: 'EXIT' });
})
function processCommand(cmd) {
var parts = cmd.split(/\s+/);
try {
switch (parts[0]) {
case 'Phone':
executed = false;
setPhone(parts[1]);
return '+OK-Phone';
case 'SetClientSearchPage':
clientSearchPage = parts[1];
if (clientSearchPage[0] != '/')
clientSearchPage = '/' + clientSearchPage;
//console.log('Se configuró la página de búsqueda del cliente ' + clientSearchPage);
return '+OK-SetClientSearchPage';
case 'SetClientEditPage':
clientEditPage = parts[1];
if (clientEditPage[0] != '/')
clientEditPage = '/' + clientEditPage;
//console.log('Se configuró la página de edición del cliente ' + clientEditPage);
return '+OK-SetClientEditPage';
default:
return '+ERR-Comando No Encontrado';
}
//tcpConnection.sendMessage(Commands.run(cmd[0], cmd.slice(1)));
} catch (ex) {
return '+ERR-Comando No Procesado'
}
}
function setPhone(phone) {
chrome.tabs.query({
}, function (tabs) {
var tab = null;
for (var i = 0; i < tabs.length; i++) {
var tabURL = tabs[i].url;
if (tabURL.indexOf(clientSearchPage) != -1 || tabURL.indexOf(clientEditPage) != -1)
tab = tabs[i];
//console.log(tabURL);
}
if (!executed) {
searchClient(tab, phone);
executed = true;
}
});
}
function searchClient(tab, phone) {
if (tab == null)
console.log('No se encontró ninguna de las páginas del cliente: ' + clientSearchPage + ', ' + clientEditPage);
else {
var site = '';
var url = tab.url;
if (url.indexOf(clientEditPage) != -1)
site = url.substr(0, url.indexOf(clientEditPage));
else if (url.indexOf(clientSearchPage) != -1)
site = url.substr(0, url.indexOf(clientSearchPage));
//console.log(site + clientSearchPage + '?telefono=' + phone);
chrome.tabs.update(tab.id, { active: true, url: site + clientSearchPage + '?telefono=' + phone });
//console.log('Se actualizó la URL con: ' + site + clientSearchPage + '?telefono=' + phone);
}
}
Я обновил вопрос с помощью файла манифеста. Это вы показываете. Однако, как я уже сказал, встроенный хост обмена сообщениями запускается, когда я вручную отключается, а затем снова включаю расширение ... поэтому я считаю, что json-файл верен. И даже, когда я закрываю Chrome, основной хост mesaging продолжает работать.Проблема возникает только при запуске компьютера (встроенный сервер обмена сообщениями не запускается автоматически) – jstuardo
@jstuardo Вы должны показать, как вы называете «connectNative». – Xan
Я добавил справочную страницу в вопрос. connectNative появляется в начале, и это: var port = chrome.runtime.connectNative ('com.desytec.lipigas.sll'); ...... при запуске компьютера расширение появляется, поэтому я думаю, что он проходит через справочную страницу .... возможно, в какой-то части этого кода есть ошибка, из-за которой не запускается собственный сервер обмена сообщениями – jstuardo