Wann ist Prozess beendet

Dieses Thema Wann ist Prozess beendet im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von VoiD, 7. Sep. 2004.

Thema: Wann ist Prozess beendet Hi, ein Kollege hat in VBA eine DOS Console, die eine SQL Anweisung ausführt mit folgendem Befehl erzeugt: Task =...

  1. Hi,

    ein Kollege hat in VBA eine DOS Console, die eine SQL Anweisung ausführt mit folgendem Befehl erzeugt:

    Task = Shell(....)

    Wie kann er jetzt überprüfen, ob der entsprechende Prozess beendet ist (die DOS Console schliesst sich nach Ausführung des SQL Statements).

    Sorry dass ich es nicht genauer schreiben kann, aber ich habe von VBA überhaupt keine Ahnung.

    Hoffe es kann mir trotzdem jemand helfen.

    Gruß
    VoiDy
     
  2. Hallo Void,

    die Dos-shell kannst du folgendermassen überwachen:
    Code:
    Sub ShellAufrufMitUeberwachung()
    
      If Shell_AufEndeUeberwachen = False Then
        MsgBox (Die DOS-Shell ist nach der maximalen Wartezeit & _
                immer noch nicht fertig :-()
      Else
        MsgBox (Die DOS-Shell wurde ordnungsgemaess beendet)
      End If
    
    End Sub
    
    Function Shell_AufEndeUeberwachen() As Boolean
      
      Const Wartezeit As Integer = 2->Sekunden
      
     ->max Wartezeit der Schleife
      Const schleife_max As Integer = (2 * 60) / Wartezeit
      
      Dim d_ID As Double->ID der shell
      Dim x As Long
      
      d_ID = Shell(C:\WINDOWS\COMMAND.COM, 1)
      
      Shell_AufEndeUeberwachen = False
      For x = 1 To schleife_max
        On Error GoTo d_ID_ist_fertig
       ->DOS-Fenster aktivieren, bringt Fehler
        AppActivate d_ID
        On Error GoTo 0
       ->Wartezeit bis zum nächsten Aufruf
        Application.Wait TimeSerial(Hour(Now()), _
                                    Minute(Now()), _
                                    Second(Now()) + Wartezeit)
      Next
      GoTo EndeBearbeitung:
      
    d_ID_ist_fertig:
      Err.Clear
      Shell_AufEndeUeberwachen = True
      
    EndeBearbeitung:
    End Function
    
    Gruß Matjes :)
     
  3. Danke erstmal :)

    Der Kollege wird es demnächst ausprobieren. Bin mal gespannt ob es klappt.
     
  4. @Matjes

    Tut mir leid, aber deine Lösung hat leider nicht funktioniert. Wenn man deine Lösung - so wie sie ist - laufen lässt, kommt sofort die Message Box, dass die DOS-Shell ordnungsgemäß beendet ist, obwohl sie noch vorhanden ist. Ich kann deine Lösung nicht 100%-tig nachvollziehen, aber es sieht mir so aus, als ob nur geprüft wird, ob die Ausführung des Öffnens der Shell überwacht wird.

    Vielleicht sollte ich nochmals schildern, was ich erreichen möchte:

    ich gebe in einem VBA Eingabefenster mehrere Parameter ein. Anschliessend starte ich ein Batch File (Oracle SQL Abfrage mit einer Laufzeit bis zu 2 Minuten) und übergebe diese Parameter an das File:
    Code:
    ProzessID = Shell(xxx.bat & space(1) & fa & space(1) & zeitraum ,1)
    
    Damit das Batch ausgeführt wird, öffnet das Betriebssystem (Win2000) eine Command-Shell. In dieser wird das Batch abgearbeitet. Nach der Abarbeitung wird die Shell automatisch geschlossen.
    Nach meinem Verständnis (und der Beobachtung im Taskmanager) gibt es die ProzessID dann nicht mehr.

    Meine Hoffnung war nun, dass ich mit VBA-Mitteln abfragen kann, ob die ProzessID im Betriebssystem noch vorhanden ist (=Prozess wird noch ausgeführt) oder die ProzessID nicht mehr vorhanden ist, was ein Zeichen für die Beendigung der Abfrage wäre.

    Hat jemand eine Idee, ob eine solche Überprüfung mit VBA Mitteln möglich ist?
     
  5. Hallo VoiD,

    hab es leider nur mit einer Cmd.exe probiert - war nicht so toll :'(

    Ein zweiter Anlauf:

    Unter http://www.mvps.org/access/api/api0004.htm gibt es->API: Shell and Wait'.

    Hab mir einen kleine .bat geschrieben, die auf Eingabe wartet und sich nach der Eingabe beendet.
    Mit folgendem Aufruf
    Code:
    Sub testxxx()
      Call ShellWait(c:\download\xxx.bat, 1)
      MsgBox (Ich bin fertig )
    End Sub
    
    hat die Shell brav auf Eingabe gewartet. Nach der Eingabe schloss sich die Shell und es erfolgte die Fertig-Meldung - also sollte es so klappen.

    Gruß Matjes :)
     
  6. @Matjes

    So, der Kollege hat es jetzt ausprobiert, und es funktioniert wunderbar. Vielen, vielen Dank, auch vom Kollegen :).
     
Die Seite wird geladen...

Wann ist Prozess beendet - Ähnliche Themen

Forum Datum
Wann ändert sich der "Owner" einer Datei? Windows 7 Forum 8. Dez. 2015
Sehen, wann die Policies angewandt wurden Windows 7 Forum 19. Nov. 2015
Wann wird COA überprüft Windows XP Forum 23. März 2012
Welcher Nutzer war wann eingelogt (auchn über RDP) Windows XP Forum 15. Juli 2011
Wann hatte ich einen Ordner/eine Datei zuletzt in Verwendung? Windows XP Forum 6. März 2010