Scripting

Dieses Thema im Forum "Windows NT / 95 / 98 / 2000 / ME" wurde erstellt von Adminton, 19. März 2002.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Adminton

    Adminton ROM

    Registriert seit:
    19. März 2002
    Beiträge:
    2
    Hallo

    Brauche rat von jemandem der sich mit Scripting auskennt!
    Ich brauche ein Script den ich in die Autostartgruppe "lege"
    Dieser Script soll 2 Propgramme starten. Das 2 program ist eine Exceltabelle die sich daten vom 1 Programm holt. Diese Tabelle soll, mit einer verzögerung von ca. 20 sekunden, nach dem start des ersten Programs gestartet werden.
    Ich hoffe jemand kann mir weiter helfen.

    mfg
    Philipp
     
  2. dwave

    dwave PC-WELT Redaktion

    Registriert seit:
    29. Juni 2001
    Beiträge:
    274
    Set WSHShell = CreateObject("WScript.Shell")

    FensterTitel = "Anwendung1"

    If Not WSHShell.AppActivate(FensterTitel) Then WSHShell.Run "<Pfad>\Anwendung1.exe"

    If Not WartenBisAktiv(FensterTitel, 200) Then Wscript.Echo ("Anwendung " & Chr(34) & FensterTitel & Chr(34) & " konnte nicht gestartet werden") : Wscript.Quit
    WSHShell.Run "<Pfad>\Excel.exe <Pfad>\Tabelle.xls"

    Function WartenBisAktiv(FensterTitel, ZeitLimit)
    WarteZeit = 100
    Zeit = ZeitLimit * 100
    Do Until WSHShell.AppActivate(FensterTitel) or (Zeit <= 0)
    WScript.Sleep WarteZeit
    Zeit = Zeit - WarteZeit
    Loop
    WartenBisAktiv = (Zeit > 0)
    End Function

    Der Titel des Fensters der ersten Anwendung ist als "Fenstertitel" einzutragen. Dieser String muss nicht exakt den kompletten Namen des Fenster enthalten, es genügt ein Teilstring. Wenn diese Anwendung zufälligerweise schon vor dem Script läuft, dann wird es mit .AppActivate aktiviert und nicht nochmal gestartet. Sollte die Anwedung noch nicht laufen, wird sie kurzerhand aufgerufen: WSHShell.Run "<Pfad>\Anwendung1.exe".
    Das Programm hat wohl eine gewisse Ladezeit, die kaum vorherzubestimmen ist. Ein einfacher Sleep-Befehl ist zu unflexibel, denn er richtet sich nach einem fest eingestellten Wert.

    Besser ist die Function "WartenBisAktiv". Die Funktion WartenBisAktiv(FensterTitel, Zeitlimit) ist nichts anderes als ein Loop, in dem bei jedem Schritt probiert wird, die Anwendung "Fenstertitel" zu aktivieren. Der Wert von "Wartezeit" sagt der Do-Loop Schleife der Funktion, wie lange sie bei einem Durchlauf warten werden soll. Es wird mit "ZeitLimit" beim Funktionsaufruf ein allgemeiner Timeout in Millisekunden * 100 vorgegeben. Von diesem Timeout zieht die Do-Loop Schleife bei jeden Durchlauf schrittweise den Wert "WarteZeit" ab. Entweder das "ZeitLimit" wird erreicht, dann ist die Anwedung1 aus irgendwelchen Gründen nicht einsatzbereit, etwa wenn die Anwendung1 irgendwelche Verbindungen nicht herstellen kann. Das Script bricht dann mit einem Hinweis ab. Oder Anwendung1 hat sich nach einer bestimmten Zahl von Schritten zurückgemeldet und die gewünschte, abhängige Exceltabelle kann ebenfalls gestartet werden.
    Konkret: In dem Beispiel habe ich als ZeitLimit "200" vorgegeben, also 20000 Millisekunden. So lange wird auf den Start von Anwendung1 maximal gewartet. Auf langsameren Rechnern sollte man damit experimentieren. In Hunderter-Schritten wird von den 20000 die "WarteZeit" abgezogen, maximal macht die Do-Loop Schleife also 200 Durchläufe. Wenn Anwendung1 aber beispielsweise schon nach 104 Durchläufen bereit ist, bricht die Schleife schon vorher ab, "WarteBisAktiv" gibt "True" zurück und die das Script weiß, dass es die Exceltabelle mit WSHShell.Run "<Pfad>\Excel.exe <Pfad>\Tabelle.xls" starten kann.
    Das Script ist im Prinzip eine Variante von RUHE!.VBS aus PC-WELT 01/2002, S.278. http://www.pcwelt.de/tipps/software/audioprogramme/21350/).

    Viele Grüsse,
    David Wolski
     
  3. kazhar

    kazhar Viertel Gigabyte

    Registriert seit:
    21. Juni 2001
    Beiträge:
    4.420
    Du hast Post...
     
  4. Adminton

    Adminton ROM

    Registriert seit:
    19. März 2002
    Beiträge:
    2
    Hi KazHar,

    ich bin sehr gespannt ob dein Program mir hilft.
    Was tut es auf dem Rechner und kann ich es dann auch meinem Program anpassen???

    mfg
    philipp
     
  5. gp

    gp Byte

    Registriert seit:
    19. März 2002
    Beiträge:
    16
    Das programm gibt es auch im Resourcekit.
     
  6. kazhar

    kazhar Viertel Gigabyte

    Registriert seit:
    21. Juni 2001
    Beiträge:
    4.420
    Hallo Philipp

    Ich hab da als Fingerübung ein kleines Proggy geschrieben, das Dein Problem in Verbindung mit einer Batchdatei lösen könnte.

    Das Programm unterbricht die Abarbeitung der Batchdatei für die Anzahl von Millisekunden, die man ihr als Parameter übergibt.

    Die Batchdatei könnte dann z.B. so aussehen:

    @echo off
    C:\Programm1
    delay 20000
    C:\Tabelle.xls

    Wenn Dich das Proggy interessiert, dann melde Dich.

    mfg KazHar
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen