6

要件: ボタンまたはリンクを介して Web ページから外部比較ツール (BeyondCompare や WinMerge など) を起動したい。テキスト ファイルのパスは、起動時にツールに渡される必要があります。ツールはそれらを理解し、左側と右側の比較パネルで開きます。

試した解決策

1) JavaScript の ActiveXObject の使用: これにより、ユーザーはボタン/リンクをクリックするだけで、マシンにインストールされている比較ツールを起動できます。しかし、これは Internet Explorer でしか機能しないため、これを使用することはできません。

参照:ハイパーリンクを使用してメモ帳などの外部プログラムを実行する方法は?

2) Java アプレットの使用: セキュリティ上の理由により、ブラウザに埋め込まれたアプレットはローカル ファイル システムへのアクセスが許可されておらず、「アクセス制御例外」がスローされます。したがって、これも一緒に行くことはできません。

参照:アプレットが AccessControlException をスローするのはなぜですか?

3)プロトコル ハンドラーの使用: プログラムをトリガーするカスタム URL プロトコルをセットアップできます。電子メール リンクの作成に使用する mailto:user@email.com 構文と同様に、これにより Windows 上の Outlook が自動的に起動します。「mailto」は、Windows レジストリで定義済みのプロトコルです。

同様に、レジストリに「launchCompareTool」という独自のプロトコルを作成し、WinMerge や BeyondCompare などのアプリケーションを起動できました。ただし、左側と右側のファイル パスを引数としてアプリケーションに渡すことはできません。起動するアプリケーションがこれらの引数を予期する必要がある場合があります。

参照: http://www.dreamincode.net/forums/topic/220444-run-program-from-server-on-client-computer/ http://msdn.microsoft.com/en-us/library/aa767914% 28v=vs.85%29.aspx#app_reg

"body" および "subject" 引数がメール クライアント (Outlook など) に渡され、それらを理解する "mailto" プロトコルとは異なります。これらの比較ツールには、プロトコルから渡すことができる引数がありません。

この要件を満たす別の方法はありますか?

ありがとう、アブドゥル

4

5 に答える 5

2

同じことを実行するために、最近、さらに別のアプローチが考案されました。基本的に、この新しいアプローチは、Windows コンソール ベースの ClickOnce アプリケーションにすぎない Handler アプリケーションの作成を中継します。ClickOnce Handler アプリケーションは、ホスト (Web ページ、Outlook、またはリンクを埋め込むことができるもの) とターゲット アプリ (WinMerge や Beyond Compare など) の間のインターセプターとして機能します。Handler アプリケーションは、ホスト アプリケーションに埋め込まれたリンクをクリックすると呼び出されます。リンクは、クエリ文字列パラメーターに情報を保持する http url に他なりません。ハンドラー アプリケーションは ClickOnce で展開されるため、それ自体を Web サーバーに公開できます。埋め込まれたリンク (HTTP URL) がハンドラー アプリケーションを呼び出し、ハンドラー アプリケーションが受信したクエリ文字列パラメーターを解析して、最後に関連するターゲット アプリケーションを呼び出します。ハンドラー アプリケーションは、Click Once Deployed パーサー アプリケーションと考えることができます。以下は、コード例を含む詳細な記事です。Custom-HyperLinks-Using-a-Generic-Protocol-Handler .

アンシュル・メーラ

于 2013-02-16T14:45:56.067 に答える
1

カスタム URL は、引数を解析して winmerge を呼び出す dos バッチ ファイルまたは vbscript を呼び出すことができます。

于 2013-10-18T03:08:02.237 に答える
0

ブラウザアプリからデスクトップクライアントと通信する必要があるという同様の要件がありました。私がとったアプローチは、Java アプレットのアプローチでした。

すぐに、あなたが言及したのとまったく同じ問題、つまりセキュリティ上の理由による「アクセス制御の例外」に直面しました。これを処理する正しい方法は、アプレットに署名することですこれらは、私のアプレットに署名するために私が行った手順です。

javac MyClient.java
jar cvf MyClient.jar MyClient.class
keytool -genkey -validity 3650 -keystore pKeyStore -alias keyName
keytool -selfcert -keystore pKeyStore -alias keyName -validity 3650
jarsigner -keystore pKeyStore MyClient.jar keyName
于 2013-04-18T15:21:13.890 に答える
0

はい、この方法でパラメーターを渡すことができます HTMLコードでこれを行います

"<a href='alert:\"Hello World\"'>this link</a>"

これにより、htmlが次のように生成されます

<a href="alert:"Hello World"">this link</a>

exeに2つのパラメーター、つまり「alert:Hello」と「World」を渡します。解析を行わずに最初のパラメーターを「Hello」のみにする方法をまだ探しています。

于 2015-04-24T07:32:25.797 に答える