2016-08-05 20 views
0

Anforderung
Ich versuche, eine HTA, oder irgendetwas an diesem Punkt, als Mittler zwischen einem geklickt Hyperlink und einer WPF-Anwendung zu verwenden (WPF_App.exe) Ich habe , da wir die ID senden müssen, die sich auf dem Hyperlink befindet (der von einer anderen Anwendung vorab bereitgestellt wird), um ein bestimmtes Element in der WPF-App aufzurufen.HTA - Der Pass Parameter von Hyperlink zu WPF-Anwendung

Was ich
Ich habe folgende HTML Ich gespeichert haben als test.hta getan haben, die einen Abfragezeichenfolgeflag Parameter AppID und analysieren es akzeptieren kann. Es kann dann zu einer WPF-Anwendung gesendet werden, die ein Wscript.Shell Objekt gestartet wird mit:

<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> 

Problem
Auch das Auflösen wenn ich diese HTA nennen kann file://our_network_share/some_folder/test.hta?AppID=100 in IE oder Windows Explorer verwenden und Es wird die WPF-App die ID richtig übergeben, es funktioniert nicht von einem Hyperlink auf diese Weise (der Link muss in Outlook erstellt werden mit Strg + K und Strg + Klick zum Testen, da der Link wird in e- platziert Mails ... Word ist auch ein guter Test dafür, und scheitert auch, soweit), und wir müssen in der Lage sein, von einer E-Mail auf diese HTA-Datei zu verlinken, während wir einen Parameter bereitstellen. Kann das gemacht werden? Und ich bin nicht in diese HTA eingesperrt, nur dass es mir am nächsten war.

Dinge, die ich versucht habe
Ich habe untersucht, wie Sie können pass command line arguments to an HTA, aber ist es eine Möglichkeit, einen Parameter von einem Hyperlink zu einer HTA in einem Abfragezeichenfolgeflag passieren? Der Grund für einen Querystring ist bisher, dass ich nicht sehe, wie Sie Leerzeichen zwischen dem HTA-Dateinamen und dem Parameter oder dem WPF-Namen und -Parameter in einem Hyperlink auflösen können. Das Einfügen des HTML-Codes funktioniert nicht, und auch keine Anführungszeichen um die Dateiverknüpfung und Argumente. Vielleicht ist es nur ein Syntaxproblem an diesem Punkt, aber nicht sicher, was es sein würde.

Antwort

0

Aus Sicherheitsgründen glaube ich nicht, dass Sie in Outlook ein Shell-Programm oder eine Befehlszeile auslösen können, indem Sie auf einen Hyperlink in der E-Mail klicken. Das soll den Benutzer vor bösartigen Angriffen schützen.

+0

Danke, aber ich weiß bereits, dass Sie dies mit Hyperlinks zu Webseiten tun können - wie in Ihrer normalen E-Mail. Eine HTA kann einen Link auf die gleiche Weise parsen, wenn die App lokal ist, z. 'file: /// C: \ temp \ test.hta? AppID = 1', und es wird mit dem übergebenen Argument gestartet (wenn' WPF_App.exe' im selben Ordner abgelegt ist und 'objShell.Run' aktualisiert wird zu diesem Ort). Nur wenn ich die Datei auf eine Netzwerkfreigabe setze (zusammen mit 'WFP_App.exe' und update' objShell.Run') und referenziere sie mit 'file: /// \\ unser_netzwerk_freigabe \ some_folder \ test.hta? AppID = 1' , wird die ID als Null übergeben. Die App wird gestartet, nur die ID ist null. – vapcguy