2016-04-22 12 views
1

Firefox用のWebExtensionを作成しようとしています。基本的に、Firefoxからローカルプログラムを実行する方法の実例が必要です。延長のFirefox WebExtensionのバックグラウンドでのctypesの使用

私の現在の実装では、で構成されています:Webページから

  • background.js
  • コンテンツscripts.js
  • manifest.jsonを

は私が扱っメッセージを送信していますcontent-scripts.jsがそれをbackground.jsに転送しています。しかし、background.jsのmsgbox関数では、私はctypesを呼び出すことができません。

ctypesのは、私はctypesのさまざまな方法をロードしようとした

が定義されていませんが、それは動作しません:それは私にエラーを与える Components.utils.import("resource://gre/modules/ctypes.jsm") または私は間違って何 var {ctypes} = Cu.import("resource://gre/modules/ctypes.jsm"

ここに私の拡張機能のソースコードがあります。

manifest.josn:



    { 
     "description": "Test web-extension.", 
     "manifest_version": 2, 
     "name": "Example", 
     "version": "1.0", 
     "homepage_url": "http://example.org", 
     "icons": { 
     "48": "icons/example-48.png" 
     }, 
     "content_scripts": [ 
     { 
      "matches": ["*://web.localhost.com/*"], 
      "js": ["content-scripts.js"] 
     } 
     ], 
     "background": { 
     "scripts": ["background.js"] 
     }, 
     "applications": { 
     "gecko": { 
      "id": "[email protected]", 
      "strict_min_version": "45.0" 
     } 
     }, 

     "permissions": [] 
    } 

background.js:あなただけのWebExtensionに(MDN上)WebExtension APIを使用することができます



    chrome.runtime.onMessage.addListener(msgbox()); 

    function msgbox() { 
     var lib = ctypes.open("C:\\WINDOWS\\system32\\user32.dll"); 

     /* Declare the signature of the function we are going to call */ 
     var msgBox = lib.declare("MessageBoxW", 
          ctypes.winapi_abi, 
          ctypes.int32_t, 
          ctypes.int32_t, 
          ctypes.jschar.ptr, 
          ctypes.jschar.ptr, 
          ctypes.int32_t); 
     var MB_OK = 0; 

     var ret = msgBox(0, "Hello world", "title", MB_OK); 

     lib.close(); 
    } 

答えて

2

Cu.import、特にctypesはWebExtension APIの一部ではないため、使用できません。 OSレベルの機能と対話したい場合は、おそらくchrome.runtime.connectNativeを待たなければならないでしょう。

+1

Firefox用の「古い」アドオン(WebExtension経由ではありません)を使用してブラウザOS通信を実装しようとすると、そこにctypesを使用できますか? – Denver

+0

はい、XUL(レガシー)とアドオンSDKの拡張機能はどちらもctypeをサポートしています。 – evilpie

+2

ありがとう、@evilpie! – Denver

関連する問題