2016-08-05 14 views
0

要件
WPFアプリケーション内の特定のアイテムを表示するために、そのハイパーリンク上のID(別のアプリケーションによって事前にステージングされる)を送信する必要があるからです。私は、クエリ文字列パラメータAppIDを受け入れ、それを解析することができ、私はtest.htaとして保存して、次のHTMLを持って
をやったHTA - 私は行く-間、私が持ってクリックしたハイパーリンクやWPFアプリケーション(<code>WPF_App.exe</code>)の間として、この時点で、HTA、または何かを使用しようとしているハイパーリンクからWPFアプリケーションに渡すパラメータ

。その後、Wscript.Shellオブジェクトを使用して開始されているWPFアプリケーションに送信することができます:IEやWindowsのエクスプローラで、私はfile://our_network_share/some_folder/test.hta?AppID=100を使用して、このHTAを呼び出すことができるにもかかわらず
を解決するには

<html><head> 
<script language="VBScript"> 
Sub RunProgram(param) 
    Set objShell = CreateObject("Wscript.Shell") 
    objShell.Run "\\our_network_share\some_folder\WPF_App.exe " & param 
    Me.Close 
End Sub 
</script> 

<script language ="Javascript"> 
function callVB() { 
    var param = getParameterByName('AppID'); 
    RunProgram(param); 
} 

function getParameterByName(name) { 
    var url = window.location.href; 
    name = name.replace(/[\[\]]/g, "\\$&"); 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
    results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
} 

</script> 
</head> 
<body onload="javascript:callVB()"> 
</body> 
</html> 

問題とWPFアプリケーションにIDを正しく渡します。このようにハイパーリンクからは機能しません。(リンクはCtrl + Kキーを使用してOutlookで作成し、Ctrlキーを押しながらクリックしてテストする必要があります。電子メール... Wordはまた、これの良いテストであり、これまでも失敗しています)、パラメータを提供しながら電子メールからこのHTAファイルにリンクする必要があります。これはできますか?そして、私はこのHTAにロックされていません、ちょうど私がこれまでに得た最も近いものでした。私は
を試してみた

物事私はどのようにすることができますpass command line arguments to an HTAを見てきましたが、クエリ文字列でHTAへのハイパーリンクからパラメータを渡す方法はありますか?クエリーストリングの理由は、これまでのところ、ハイパーリンクの中で、HTAファイル名とパラメータ、またはWPF名とパラメータの間のスペースを解決する方法が見えていないからです。 HTMLコード%20を入れても機能せず、ファイルのリンクと引数の前後に引用符も入れません。たぶんこれは構文上の問題ですが、それが何であるかはわかりません。

答えて

0

セキュリティ上の理由から、Outlookでは電子メールのハイパーリンクをクリックしてシェルプログラムやコマンドラインを起動することはできません。これは、ユーザーを悪意のある攻撃から保護するためです。

+0

ありがとうございますが、あなたは通常の電子メールのようにWebページへのハイパーリンクでこれを行うことができます。アプリがローカルの場合、HTAは同じ方法でリンクを解析できます。 'file:/// C:\ temp \ test.hta?AppID = 1'とし、その引数を渡して起動します(' WPF_App.exe'を同じフォルダに入れ、 'objShell.Run'を更新するとその場所へ)。ファイルをネットワーク共有( 'WFP_App.exe'と一緒に更新し、' objShell.Run'を更新)に置き、それを 'file:/// \\ our_network_share \ some_folder \ test.hta?AppID = 1'で参照するだけですIDはnullとして渡されます。アプリが起動し、IDがnullになります。 – vapcguy

関連する問題

 関連する問題