| |

Visual-Basic EinsteigerRe: 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 |  |
 | 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 |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|