Можно ли запустить собственный хост с аргументами main (int argc, char ** argv)? Писать в background.js более разумно, но не существует API-интерфейса, подобного chrome.runtime.connectNative (строковое приложение, строковые аргументы). Существует только chrome.runtime.connectNative (строковое приложение).
Насколько мне известно, лучшее, что вы можете надеяться сделать, это создать файл .bat (или эквивалентный) и передать оттуда аргументы. если у вас есть динамические данные, которые вы хотите передать из расширения (что-то, что вы не можете жестко закодировать в файл сценария запуска), то вам нужно будет разработать протокол для запуска последовательности запуска, чтобы гарантировать, что ваши параметры были обработаны, например,
var startupDone = false,
port = chrome.runtime.connectNative( 'my.native.app' );
port.onMessage.addListener( function( msg ) {
if ( msg.type === 'startupResponse' && msg.done ) startupDone = true;
else {
// process normal messages
}
} );
port.postMessage( { type: 'startupRequest', params: [] } );
...
if ( startupDone ) {
port.postMessage( /* non-startup message */ );
}
Я предположил, что ваш исполняемый файл будет jar, и это будет сторонний jar, тогда нижеприведенное может помочь переписать jar, чтобы принять postMessage.
Если ваши аргументы являются динамическими, вы можете создать небольшое собственное приложение для запуска, которое будет действовать как посредник. Он принимает аргументы, отправленные вашим расширением Chrome, и запускает основное нативное приложение с этими аргументами. Когда основное приложение запущено, расширение может обмениваться с ним сообщениями.
Если при обмене сообщениями с основным нативным приложением возникает проблема в описанном выше сценарии (я никогда не пробовал), вы можете передать больше обязанностей приложению-пускачу и позволить ему пересылать сообщения между основным нативным приложением и вашим расширением. ,