Fischer: Wertübergabe an HTA

Beitrag lesen

Hallo nochmal! Wenn's interessiert, hier eine kleine Applikation, die von der Wertübergabe Gebrauch macht. Die REG-Datei fügt dem Kontextmenü von .js-Dateien (geht natürlich auch mit .vbs) den Menüpunkt "Erweitert ..." hinzu. Damit kommt man zu einem kleinen HTA-Fenster, mit dem man das betreffende Skript ausführen oder anzeigen/bearbeiten kann. Es ist auch möglich (darum das Ganze), das Skript mit Argumenten zu füttern, die man bequem in ein INPUT-Feld eingeben kann. Auf diese Weise spart man sich den lästigen Umweg über die Konsole.

Das Ganze ist fixfertig zu gebrauchen, nur die REG-Datei müßte natürlich an den Pfad der HTA auf der eigenen Festplatte angepaßt werden. Möglicherweise lautet unter Windows XP auch der HKCR-Eintrag für .js-Dateien ("JSFile") anders? Mit den alten Windows-Heim-Betriebssystemen sollte es auf jeden Fall so, wie es ist, funktionieren.

----- speichern als xyz.reg und ausführen ---------------------------

REGEDIT4

[HKEY_CLASSES_ROOT\JSFile\Shell\htaopen]
@="Erweitert ..."

[HKEY_CLASSES_ROOT\JSFile\Shell\htaopen\command]
@="mshta.exe "C:\...Pfad...\fks.hta" ?"%1""

---------------------------------------------------------------------

----- speichern als fks.hta -----------------------------------------

<html>
<head>
  <HTA:APPLICATION ID="fk_hta"
    APPLICATIONNAME="Skript"
    BORDER="thin"
    BORDERSTYLE="normal"
    CAPTION="yes"
    CONTEXTMENU="no"
    MAXIMIZEBUTTON="no"
    MINIMIZEBUTTON="yes"
    SCROLL="no"
    SELECTION="no"
    SHOWINTASKBAR="yes"
    SINGLEINSTANCE="no"
    SYSMENU="yes"
    WINDOWSTATE="normal"
  >
  <!-- Fischer hats gemacht -->
  <script type="text/javascript">

window.resizeTo(400,200);
    window.moveTo(Math.floor((screen.availWidth-400)/2),Math.floor((screen.availHeight-200)/2));
    var param=fk_hta.commandLine;
    if (param.indexOf("?")>-1) param=param.substring(param.lastIndexOf("?")+1,param.length);
    else { alert("HTA-Parameter fehlt!"); window.close(); }

</script>
  <title>Skript</title>
  <style type="text/css">

body      { font-family:"News Gothic MT",sans-serif; cursor:default; font-size:11pt;
                color:#D0D0D0; background-color:#0000FF; padding-top:10px; padding-left:10px; }
    button    { height:30px; width:100px; margin-right:18px; }
    button.go { color:#000000; background-color:#D0D0D0; }

</style>
  <script type="text/jscript" language="JScript">

var shell=new ActiveXObject("WScript.Shell");
    function mach() { shell.Run(param+document.Formular.Text.value); }
    function anzeige() { shell.Run(shell.ExpandEnvironmentStrings("%windir%")+"\Notepad.exe "+param); }

</script>
</head>
<body>
<script type="text/javascript">

function reset() { document.Formular.Text.value=""""; }
  var text=param.toLowerCase().replace(/"/g,"");
  text=text.substring(text.lastIndexOf("\")+1,text.length);
  document.write("<p>Skriptdatei: "+text+"</p>");

</script>
<p><button type="button" class="go" onClick="mach()">Ausführen</button>
<button type="button" onClick="anzeige()">Anzeigen</button>
<button type="button" onClick="window.close()" style="margin-right:0px;">Schließen</button></p>
<form name="Formular" action=""><span style="margin-right:15px;" onClick="reset()"
  title="Zurücksetzen">Parameter:</span><input name="Text" type="text" size="33"
  value="&quot;&quot;"></form>
</body>
</html>

---------------------------------------------------------------------

Vielleicht hat ja jemand Freude dran!
Liebe Grüße,
Fischer