Alexander: EXE-Datei starten über eine HTML-Datei starten

Hallo

Ich habe ein Problem. Ich möchte ein CD erstellen, auf welcher verschiedene Anwendungsprogramme sich befinden sollen.

Dazu möchte ich eine HTML-Datei erstellen, mit der eine Menüstruktur dargestellt wird. Über diese Menüstruktur soll es möglich sein auf der CD befindliche Programme direkt aufzurufen (bzw. Aufrufen des Installationsvorganges). Dabei ist aber der Dialog (Datei öffnen bzw. speichern) unerwünscht (ich weiß, daß diese Dialog-Box aus Sicherheitsgründen eingeblendet wird, die CD soll aber nur lokal -bei mir-verwendet werden).

Da die HTML-Applications nur mit dem MSIE 5.0 funktionieren, will ich auch ein Alternativ-Menü erstellen, falls die CD an einem Rechner, auf dem ein anderer Browser installiert ist, eingesetzt werden soll.

Der Autostart ist ist hier schon beschrieben worden http://www.teamone.de/selfaktuell/autorun.htm
(der Link funktioniert aber nicht mehr :-(

Auf www.dhtml-now.de habe ich eine Möglichkeit gefunden, wie man ein ausführbares Programm mit einer HTA-Datei öffnen kann. Aber, wie kann ich diese HTA-Datei in eine HTML-Datei einbinden?

Ich hoffe, ich habe mein Anliegen so dargelegt, daß man es auch versteht.

Bitte helft mir

CU

Alexander

P.S.
Ich weiß, daß diese Frage schon oft gestellt worden ist, nur leider jedesmal ohne ein Ergebnis.

  1. Hi,

    ich glaube, Du wirst umgehend ins Archiv geschickt.

    Gruß
    Timothy

  2. Alexander,

    Ich weiß, daß diese Frage schon oft gestellt worden ist, nur leider jedesmal ohne ein Ergebnis.

    manchmal liegt das mangelnde Ergebnis nicht unbedingt an den Antwortenden, sondern an den Erwartungen des Fragenden :-)

    was net geht, das geht net ... oder es geht anders als man möchte...

    ich kann dir auch nicht weiterhelfen, aber es lag mir auf der Zunge... manchmal muß man sich eben etwas anderes ausdenken...

    Gruss und viel Erfolg

    Connie

  3. Hi Alexander

    So kannst Du aus einer hta Seite Programme starten:

    obj=new ActiveXObject('WScript.Shell');
    obj.Run ("winword");

    Das ist eine recht mächtige Sache.

    Aber, wie kann ich diese HTA-Datei in eine HTML-Datei einbinden?

    Meines wissens gar nicht, aber umgekehrt geht es sehr wohl. Eine hat seite ist eigentlich nichts anderes wie eine html seite mit einem anderen Kopf und einer anderen Extension. Zb so:
    <html>
    <head>
    <title>Titel</title>
    <HTA:APPLICATION ID="oHTA"
         APPLICATIONNAME="myApp"
         BORDER="thin"
         BORDERSTYLE="normal"
         CAPTION="yes"
         ICON=""
         MAXIMIZEBUTTON="yes"
         MINIMIZEBUTTON="yes"
         SHOWINTASKBAR="yes"
         SINGLEINSTANCE="yes"
         SYSMENU="yes"
         VERSION="1.00"
         WINDOWSTATE="minimize"
        >

    </head>

    <body>
    </body>
    </html>

    Wenn Du in den body ein frameset stellst, kannst Du dort deine html Seiten einbringen. Mit Application=yes oder no im frame tag kannst du der jeweiligen html Seite auch hta Rechte geben. Leider funktioniert nicht alles so wie spezifiziert.

    Ich hoffe, daß hilft Dir.

    Liebe Grüße aus Wien,

    Clemens

    1. Hallo Clemens

      Danke für Deine Nachricht

      Wenn Du in den body ein frameset stellst, kannst Du dort deine html Seiten einbringen. Mit Application=yes oder no im frame tag kannst du der jeweiligen html Seite auch hta Rechte geben. Leider funktioniert nicht alles so wie spezifiziert.

      Du hast geschrieben, daß ich in den body der hta-Datei ein frameset einfügen könnte. In den BODY? Geht das überhaupt?

      Nur leider weiß ich nicht, wie ich das anstellen soll, so wie Du es beschrieben hast. Wie kann ich HTML-Seiten in eine HTA-Datei einbinden? Wie kann ich die HTML-Seite, die alle auf der CD enthaltenen Programme zeigt, in eine HTA-Datei einbinden? In dieser Datei soll ja für jedes Programm ein Aufruf (um dieses zu starten) enthalten sein.

      Beispiel:
      Ich möchte eine HTML Datei einbinden, welche Verweise zu den
      Programmen 'App1' und 'App2' enthält. Wie kann ich diese in die HTA-Datei einbinden, so daß beim Aufruf auf den Link zu 'App1' die Anwendung (bzw. der Installationsvorgang) ohne den störenden Dialog (Datei öffnen, speichern) aufgerufen wird.

      CU

      Alex

      1. Hi Alex

        Eine html Seite kann einen body haben. Eine hta Seite auch. Hta Seiten sind nur ab dem Explorer 5.0 lauffähig. Davor nicht und unter Netscape auch nicht. Stefan Münz hat einen Thread mit zwei links darüber geschrieben, such im Archiev (ich weiss den link nicht mehr). Wenn Du die Programmaufrufe unbedingt aus html Seiten starten willst, ist das etwas komplizierter, weil für eine html Seite die hta Seite nicht ersichtlich ist (kein opener und auch kein referrer) und aus der htm seite nicht direkt möglich. Das mit dem link auf einen link (eine andere Antwort) habe ich nicht gewusst und ist sehr interessant. Sonst mußt Du mit Flags (oder einer anderen Übergabe)arbeiten. Ich gebe Dir dann ein Beispiel. Einfacher ist es, wenn Du aus der hta arbeitest. ZB so. Die hta:

        <html>
        <head>
        <title>FGSS - nicht schließen</title>
        <HTA:APPLICATION ID="oHTA"
             APPLICATIONNAME="myApp"
             BORDER="thin"
             BORDERSTYLE="normal"
             CAPTION="yes"
             ICON=""
             MAXIMIZEBUTTON="yes"
             MINIMIZEBUTTON="yes"
             SHOWINTASKBAR="yes"
             SINGLEINSTANCE="yes"
             SYSMENU="yes"
             VERSION="1.00"
             WINDOWSTATE="maximized"
            >

        </head>
        <script language="JavaScript">
        function run_program(Startwunsch)
        {
        obj=new ActiveXObject('WScript.Shell');
        obj.Run (Startwunsch);
        }
        </script>
        <body>
        <div onclick="run_program('winword')">Startet Dir Word beim draufklicken</div>
        </body>
        </html>

        Speichere diese Datei als "irgendwas.hta" und führe sie dann aus. Zwischen die body tags kannst Du alles wie sonst auch setzen. Falls Du ein frameset willst, brauchst du sie nicht. Sei mir nicht böse, aber für die lange erklärung mit den flags bin ich zu müde. Du kannst kurz gesagt ein frameset aufmachen und dir dann variablen überlegen, die du so setzt, wie du dir die reaktion aus der hta seite überlegt hast. kurzes beispiel:

        zuerst in der hta

        Fenster = window.open(....)
        window.setTimeout("uberprufen()",100);

        function uberprufen()
        {
        if(Fenster.htaFlag)
        {
        Fenster.htaFlag = false;
          
        switch(Fenster.Aufgabe)
          {

        case "speichern":
           alert('mach hier was du willst, zb speichern');
           break;

        default:
            break;
          
          }
        }
        }

        in der Fenster Seite (ist eigenes Browserfenster, kann auch frameset sein) schreibst Du in die Variable aufgabe den auftrag, den du dann in der switch anweisung ausführen willst. sobald du die variable htaflag in deinem script auf true setze, startet dit hta anweisung (bzw höchstens 100 millisec später.)

        Ich liebe sauber ausgeschriebene antworten. der zweite teil von mir ist das nicht. tut mir leid, ich bin müde. falls du trotzdem nicht weiter kommst, schreibs mir. dann schick ich dir was genaueres. aber probiers bitte trotzdem.

        gute nacht.

        grüße aus Wien

        Clemens

  4. Hallo Alexander,

    Es gibt zumindest unter Windows eine Möglichkeit, jede EXE-Datei aus einer HTML-Seite zu starten, inkl. Parameter und ohne Sicherheitsabfrage. Ob es funktioniert, wenn man eine CD verwendet weis ich nicht.
    Die Lösung: Erzeuge eine Verknüpfung für die EXE-Datei. Unter Windows wird dafür eine Datei mit der Endung .lnk angelegt. Über einen normalen HTML-Verweis kannst Du dann diese Datei aufrufen. Da das System den Inhalt der .lnk-Datei analysiert und die entsprechenden Aufrufe durchführt, bist Du dann von den Beschränkungen des Browsers befreit. Diese Lösung hat allerdings eigene Beschränkungen: Es funktioniert nur, wenn die Pfadangaben zu den .lnk-Dateien bekannt sind. Nicht jede Installation verwendet dafür die Standardeinstellungen von Windows.
    Grüsse
    Günter