Laufzeitproblem mit .hta ("Ausführung des Skripts abbrechen?")

  • VBScript

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Laufzeitproblem mit .hta ("Ausführung des Skripts abbrechen?")

    Hallo,

    ich habe einne .hta erstellt, die je nach Ordnertiefe und Dateimenge wahrscheinlich sehr lange laufen wird.
    bei kleinen Verzeichnissen funktioniert das Tool tadellos. Bei großen gibt es jedoch die im Bildanhang zu sehende Fehlermeldung.

    kann ich das irgendwie umgehen und dafür im gegenzug einfach in Kauf nehmen, das der Rechner dann halt 2h vor sich hin rödelt?

    *Topic verschoben*
    Bilder
    • Verzeichnis_nach_Datei-Inhalt_durchsuchen.jpg

      99,45 kB, 1.146×588, 258 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Bot-Like VB6 oder VB.NET? Gugst Du hier.
    Ich denke nicht, dass das Problem an .hta liegt, zumal ich diesen Dateityp nicht kenne.

    Quellcode

    1. #IF VB6
    2. Steige um auf VB.NET
    3. #End If
    Pack die Abarbeitung Deiner Daten in einen Thread, da wird die GUI nicht blockiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich arbeite mit VBS. War das mit VB6 also richtig? Alles was VBS nicht kann, konnte ich bisher immer über eine .hta ( HTML Application) kompensieren.
    Ich hab den hässlichen Verdacht, dass man mit VBS keine Treads erstellen kann. Ist das so?
    Wenn Nein... wie?
    Wenn Ja... was dann?
    Für VBS haben wir ein eigenes Unterforum.

    Garantiert kann man mit VBS keine Threads erstellen, das geht nicht einmal mit VB6 (zumindest nicht mit der Sprache selbst).

    Was du bräuchtest, ist eine Art "DoEvents", das ist ein Befehl aus VB6. Gibt es aber in VBS nicht. Als Alternative wird eine Art Timer empfohlen. Es gibt wohl einen Sleep-Befehl, siehe z. B. hier: heise.de/forum/heise-Developer…satz/posting-124237/show/
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich war mir mit der Forumwahl unsicher, weil ich das Problem eigentlich immernoch in der .hta vermute.
    Wscript.sleep gibts aber mir will nicht so recht in den Kopf wie das mein Problem lösen kann. (Damit lasse ich das Skript ja einfach nur um die Zeit "X" ruhen.)
    Ich habe leider noch nicht die Zeit dazu gefunden, aber bin mir trotzdem (fast) sicher, dass wenn ich das ganze ohne Benutzerobefläche (HTA) aufziehe,
    also nur eine .vbs wird sich da nix aufhängen.

    Wie sieht das bei (echtem) HTML aus? (Da kommt die Meldung doch auch gern mal beim surfen angeflattert)
    HTA Dateien werden vom IE ausgeführt.
    Um die Fehlermeldung loszuwerden ginge es einen RegSchlüssel zu ändern:


    Öffnen Sie mit einem Registrierungs-Editor wie z. B. "Regedt32.exe" diesen Schlüssel:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Styles
    Hinweis Wenn der Schlüssel "Styles" nicht vorhanden ist, erstellen Sie einen neuen Schlüssel mit diesem Namen.
    Erstellen Sie unter diesem Schlüssel einen neuen DWORD-Wert mit dem Namen "MaxScriptStatements", und geben Sie als Wert die gewünschte Anzahl von Skriptanweisungen an. Wenn Sie nicht sicher sind, welchen Wert Sie für diesen Eintrag wählen sollen, legen Sie ihn auf den DWORD-Wert "0xFFFFFFFF" fest, um das Dialogfeld zu unterdrücken.


    Siehe im Link:

    support.microsoft.com/de-at/he…et-explorer-to-run-slowly

    Das Ganze ist eine Art Sicherheitsfeature und hat per se nix mit vbs oder html zu tun. Das würde auch bei jeder Webseite die 2 Stunden mit einem Script läuft vom IE angezeigt werden.


    Das ist meine Signatur und sie wird wunderbar sein!
    siehe Bild.

    In dem Mikrosoft Link steht ja auch drin, dass das die Lösung für IE4 - 8 ist.
    aber wie geh ich dann bei IE 11 vor?

    zum surfen nutze ich den gar nicht.

    gibts denn direkt im IE keine Option dafür??
    Bilder
    • nternet Explorer.jpg

      16,79 kB, 481×189, 137 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Bot-Like“ ()

    Bot-Like schrieb:

    Wie sieht das bei (echtem) HTML aus? (Da kommt die Meldung doch auch gern mal beim surfen angeflattert)

    Das hat aber nichts mit HTML zu tun, sondern mit Skripten. Was du dann meinst ist wohl die Ausführung von JavaScript.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ja ok der Ansatz war Quatsch.
    hast du noch ne Idee, wie ich den IE überreden
    kann mein skript doch mal 10 min auszuführen?

    Auf Chip.de gabs noch eine Anleitung um das Skriptdebugging zu deaktivieren. Das wäre zwar keine Dauerlösung aber immerhin.

    Leider ging auch das nicht.

    Ich bin kurz davor auf zu geben und den Scheiß einfach nur im VBS zu machen. Wäre aber Schade um die ganze Arbeit mit der Benutzeroberfläche.
    Hast du denn mal das mit dem "Sleep" getestet? Weil während der Schlafphase bekommt der Browser theoretisch kurz die Möglichkeit, wieder auf Eingaben zu reagieren (und damit könnte auch diese Meldung verschwinden). Einen Versuch ist es meiner Meinung nach Wert.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Nein das habe ich nicht getestet. (Aus 2 Gründen)

    1. der Interpreter von .vbs ist der WindowsSkriptingHost
    Eine .hta wird von irgend was anderm interpretiert und kennt daher den befehl Wscript.sleep nicht.

    2. Selbst wenn ich das Skript irgendwie zum verweilen bringe nutzt das dem Browser nix. Ich wollte mal eine Statusanzeige in einer .hta einbringen die vom GUI gänzlich unbeachtet blieb. Soll heißen die .hta scheint ihr skript abzuarbeiten und dann ist sie erst wieder ansprechbar.
    Hier steht, wie es in einer HTA geht: stackoverflow.com/questions/16…p-routine-for-hta-scripts

    Bot-Like schrieb:

    nutzt das dem Browser nix

    Doch. Im Moment scheint es so zu sein, dass das Skript den Browser zu 100% auslastet. Mit einer Pause passiert das nicht und somit kommt die Fehlermeldung nicht (und um die geht es doch, oder nicht?).
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo!

    Ich würde es mal mit Firefox probieren. Der IE hat schon immer Probleme wenn das Script schneller läuft als der IE. Zudem würde ich versuchen die Suchparameter direkt in einen Link zu packen und mir nur das Suchergebnis anzeigen zu lassen. HTA müsste doch auch im FF funktionieren, sind doch auch nur HTML-Dateien?

    VBS-Beispiel für Firefox

    Visual Basic-Quellcode

    1. Dim wshShell
    2. Dim objFFApp
    3. Dim strLinkDBRIS
    4. strLinkDBRIS = "firefox.exe -new-tab " & _
    5. "https://seite.de/useite/inhalt.xml?action=" & _
    6. "bn&er=1111111&n=alles&anfang=" & _
    7. Year(Now) & "-" & Right("0" & Month(Now), 2) & "-" & _
    8. Right("0" & Day(Now), 2) & "T" & Right("0" & Hour(Now), 2) & _
    9. ":" & Right("0" & Minute(Now), 2)
    10. Set objFFApp = CreateObject("WScript.Shell")
    11. With objFFApp
    12. .Run ("firefox.exe")
    13. WScript.Sleep(2000)
    14. .Run (strLinkDBRIS)
    15. End With
    16. Set objFFApp = Nothing


    Vielleicht solltest Du Dir überlegen ob HTA überhaupt das richtige Mittel ist.

    Gruß, René
    @Marcus Gräfe:
    Danke für deine hartnäckigkeit! Ich habe das mit dem sleep von deinem Link probiert.
    Ergebnis: es braucht deutlich länger bis die Meldung kommt. Aber sie kommt!
    Schade.

    @Mumpel:
    Das Tool soll bei mir auf Arbeit genutzt werden. Soll heißen ich kann nicht davon ausgehen, dass jeder Firefox hat.
    Ich werde es jetzt im VBS umsetzen. dann ist es halt nicht so hübsch, aber es funktioniert.

    Trotzdem Danke an alle!!!
    Hi,

    eine Idee hätte ich noch.
    Da hta ja von der Browserengine interpretiert wird, müsste es doch Window.SetTimeout geben.
    Eventuell unterbrichst du die Ausführung deiner Schleife regelmässig da die Fehlermeldung bei einer gewissen Anzahl von Befehlen kommt.
    Damit kannst du die Funktion immer wieder neu aufrufen und der Browser sollte von vorne zählen.

    lG
    Das ist meine Signatur und sie wird wunderbar sein!
    Wird auch im von mir in Post #14 verlinkten Thread vorgeschlagen (u. a.). Dazu wäre allerdings ein Umschreiben des Codes nötig.

    Aber das Thema ist ja nun erledigt.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum