是否可以使用main(int argc,char ** argv)参数启动本机主机?在background.js中编写更合理,但没有像chrome.runtime.connectNative(string application,string [] arguments)那样的api。只有chrome.runtime.connectNative(字符串应用程序)。
答案 0 :(得分:0)
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 */ );
}
答案 1 :(得分:0)
我假设您的可执行文件是jar并且它是第三方jar,然后下面可能有帮助否则重写jar以接受postMessage可能是最佳解决方案
答案 2 :(得分:0)
如果您的参数是动态的,您可以创建一个小型启动器本机应用程序,就像中间人一样。它接收Chrome扩展程序发送的参数,并使用这些参数启动主本机应用程序。启动主应用程序后,扩展程序可以与其交换消息。
如果在上面的场景中与主本机应用程序交换消息有任何问题(我从未尝试过),您可以为启动器应用程序提供更多职责,并让它在主本机应用程序之间来回传递消息和你的扩展。