vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Re: Aufstarten von Exe begrenzen 
Autor: Tolwyn
Datum: 04.03.02 10:03

Hi,

aha so wird schon einiges klarer...

damit hier stellst Du fest, ob ein Task noch läuft: (einfach in ein Modul kopieren)
Option Explicit
 
Private Declare Function CloseHandle Lib "kernel32" _
  (ByVal hObject As Long) As Long
 
Private Declare Function OpenProcess Lib "kernel32" _
  (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As _
   Long, ByVal dwProcessId As Long) As Long
 
Private Declare Function GetExitCodeProcess Lib "kernel32" _
  (ByVal hProcess As Long, lpExitCode As Long) As Long
 
Private Declare Function TerminateProcess Lib "kernel32" _
  (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
 
Const STILL_ACTIVE = &H103
Const PROCESS_ALL_ACCESS = &H1F0FFF
 
Public Function IsTaskActive(lTaskID As Long) As Boolean
  Dim lHwnd         As Long
  Dim lExitCode     As Long
 
  lHwnd = OpenProcess(PROCESS_ALL_ACCESS, False, lTaskID)
  Call GetExitCodeProcess(lHwnd, lExitCode)
  Call CloseHandle(lHwnd)
 
  IsTaskActive = IIf(lExitCode = STILL_ACTIVE, True, False)
 
End Function
und so musst Du Deine Schleife abändern

  ' Array in dem wir uns die TaskIDs speichern
  Private laTaskIDs() As Long
  ' eine Möglichkeit zum abbruch ist m,eist auch nicht verkehrt
  Private bAbbort     As Boolean  
 
  ' Array für die TaskID's dimensioneieren
  ReDim laTaskIDs(1 To 5)
 
  Do While Not EOF(1)
    '  ...
    ' Dein Schleifencode
    ' ...
    ' ein kleiner zähler für mich
    Static lNextTask  As Long
    Do
      ' wir bleiben so lange in der Schleife hier, bis einer der 5 Tasks
      ' verschwunden ist
      DoEvents
      lNextTask = lNextTask + 1
      If lNextTask > 5 Then
        lNextTask = 1
      End If
      If Not IsTaskActive(laTaskIDs(lNextTask)) Then
        ' Wenn dieser Task schon weg ist, dann einen neuen starten
        laTaskIDs(lNextTask) = Shell("" + Irfan + " " + spalte1 + " " + Befehl _
          + _
            "" + spalte1 + "" + ext2 + "")
        'laTaskIDs(lNextTask) = Shell("C:WinNTNotepad.exe")
        ' und raus hier, damit wir mit dem nächsten weitermachen können
        Exit Do
      End If
    Loop Until bAbbort
    '  ...
    ' Dein Schleifencode
    ' ...
  Loop
  Close #1
Gruß
Tolwyn
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Aufstarten von Exe begrenzen96Oliver28.02.02 09:10
Re: Aufstarten von Exe begrenzen89Tolwyn01.03.02 19:26
Re: Aufstarten von Exe begrenzen42Oliver04.03.02 07:20
Re: Aufstarten von Exe begrenzen51Tolwyn04.03.02 10:03
Danke42Oliver04.03.02 11:19

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel