1

ブラウザでJavaScriptを実行しています。user32.dll で関数/メソッドを呼び出すことは可能ですか。

これは、pInvoke 呼び出しを使用して C# から可能です。JavaScript で同じことを行うにはどうすればよいですか?

ありがとう、

だって

4

6 に答える 6

12

JavaScript サンドボックスがあるため、Netscape スタイルのブラウザー プラグイン (広くサポートされている)、ActiveX コントロール (ほぼ IE のみ)、または .Net コントロールなど、昇格されたセキュリティ アクセス許可を必要とする中間層なしでは実行できません。 (私はそれが可能だと思います; これもおそらく IE のみです)。いずれの場合も、JavaScript はコントロールと対話し、コントロールは USER32 呼び出しを行います。

ユーザーがアプリケーションに昇格されたアクセス許可を付与しない限り、それは機能しませんが、Windows が必要なため、これは可能性のあるある種のイントラネット アプリケーション用であると推測しています。

于 2009-10-11T07:47:59.230 に答える
5

クライアントに独自のプラグイン、拡張機能、または ActiveX をインストールする必要があります。

Firefox 拡張機能の場合、jsctypesを使用して呼び出しを簡単にラップできます。
Firefox 4 に含まれる Jetpack API を使用すると、すべて JavaScript になり、ブラウザの再起動も必要ありません。

基本的な Hello World の mozilla.org の例を次に示します。

/* Load JS Ctypes Javascript module */
require("chrome").Cu.import("resource://gre/modules/ctypes.jsm");

/* Load windows api dll */
var lib = ctypes.open("user32.dll");

/* Declare the signature of the function we are going to call */
var msgBox = lib.declare("MessageBoxW",
                         ctypes.stdcall_abi,
                         ctypes.int32_t,
                         ctypes.int32_t,
                         ctypes.ustring,
                         ctypes.ustring,
                         ctypes.int32_t);
var MB_OK = 3;

/* Do it! */
var ret = msgBox(0, "Hello world", "title", MB_OK);

/* Display the returned value */
alert("MessageBox result : "+ret);

lib.close();
于 2011-04-14T11:36:46.230 に答える
0

C#で独自のWebブラウザーを構築する場合は、JavaScript呼び出しをインターセプトして、ブラウザーで必要なものに変換できます。ただし、他のブラウザで使用できるようにする場合は機能しません。

于 2011-04-15T19:54:27.317 に答える
0

クライアントでは-セキュリティ上の理由から不可能です(すべてのサイトがコンピューターでシステムコマンドを実行できると想像してください...世界の終わり-ActiveXで可能かもしれませんが、それはIEのみですが、DLLはWindowsのみです)。

サーバー上で実行する場合は、AJAX と C# を使用する必要があります。

于 2009-10-11T07:45:06.460 に答える
0

Web ページから JavaScript を使用してクライアント マシンで dll メソッドを実行しますか? それが黙示録を引き起こすものです。

于 2009-10-11T08:28:26.667 に答える
0

user32 への呼び出しをラップする com オブジェクトを作成します。IE/javascript で呼び出します。あなたの DynamicWrapperX オブジェクトはこれで機能します (それはその com オブジェクトであり、必要に応じて dll を呼び出すことができます)。

于 2011-04-18T23:07:27.510 に答える