vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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

Visual-Basic Einsteiger
Re: Process ID ermitteln / Überprüfen ob Prozess läuft 
Autor: BasTler
Datum: 14.03.06 11:16

Hallo Frank,

hier ist mal ein Source, der das machen sollte, was du suchst.
' Prüft, ob eine EXE-Datei bereits ausgeführt wird und gibt im Erfolgsfall 
' entweder
' das Fensterhandle oder die Process-ID zurück
Public Function IsEXERunning(ByVal sFilename As String, _
  Optional ByVal iReturn As procReturnValue = ProcessID) As Long
    Dim nResult As Long
 
  ' Je nach System...
  If IsWinNT() Then
    ' NT4 - Sonderbehandlung :-)
    Dim lCb As Long
    Dim lCbNeeded As Long
    Dim lCbNeeded2 As Long
    Dim lProcID() As Long
    Dim lModules(1 To 200) As Long
    Dim hProcess As Long
    Dim sModuleName As String
    Dim n As Long
 
    ' alle laufenden Prozesse ermitteln
    lCb = 8: lCbNeeded = 96
    Do While lCb <= lCbNeeded
       lCb = lCb * 2
       ReDim lProcID(lCb / 4) As Long
       EnumProcesses lProcID(1), lCb, lCbNeeded
    Loop
 
    For n = 1 To lCbNeeded / 4
       ' Prozess-Handle ermitteln
       hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _
          Or PROCESS_VM_READ, 0, lProcID(n))
       If hProcess <> 0 Then
         nResult = EnumProcessModules(hProcess, _
           lModules(1), 200, lCbNeeded2)
           If nResult <> 0 Then
             sModuleName = Space(MAX_PATH)
             nResult = GetModuleFileNameEx(hProcess, _
               lModules(1), sModuleName, Len(sModuleName))
             sModuleName = LCase$(Left$(sModuleName, nResult))
 
             ' sModuleName beinhaltet den kompletten Pfad!
             If Right$(sModuleName, Len(sFilename) + 1) = _
               "\" + LCase$(sFilename) Then
               ' Jepp - EXE gefunden!
               If iReturn = Handle Then
                 IsEXERunning = ProcID2hWnd(lProcID(n))
               Else
                 IsEXERunning = lProcID(n)
               End If
               Exit For
             End If
           End If
       End If
       CloseHandle hProcess
    Next n
 
  Else
    ' bei allen anderen Systemen...
    Dim lSnapshot As Long
    Dim uProcess As PROCESSENTRY32
 
    ' "Snapshot" des aktuellen Prozess ermitteln
    lSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    If lSnapshot <> 0 Then
      uProcess.dwSize = Len(uProcess)
 
      ' Ersten Prozess ermitteln
      nResult = ProcessFirst(lSnapshot, uProcess)
 
      Do Until nResult = 0
        ' Prozessliste durchlaufen
        If InStr(LCase$(uProcess.szexeFile), sFilename) > 0 Then
          MsgBox "EXE gefunden"
          If iReturn = Handle Then
            IsEXERunning = ProcID2hWnd(uProcess.th32ProcessID)
          Else
            IsEXERunning = uProcess.th32ProcessID
          End If
          Exit Do
        End If
 
        ' nächster Prozess
        nResult = ProcessNext(lSnapshot, uProcess)
      Loop
 
      ' Handle schliessen
      CloseHandle lSnapshot
    End If
  End If
End Function
Aufruf mit
ProcID = IsEXERunning(DatenName, ProcessID)

Gruß BAStler
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Process ID ermitteln / Überprüfen ob Prozess läuft1.491Frank32114.03.06 10:39
Re: Process ID ermitteln / Überprüfen ob Prozess läuft811BasTler14.03.06 11:16
Re: Process ID ermitteln / Überprüfen ob Prozess läuft576BasTler14.03.06 11:20
Re: Process ID ermitteln / Überprüfen ob Prozess läuft576Frank32114.03.06 12:30

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