![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
|
Themen-Optionen | Ansicht |
![]() |
#5 |
Veteran
![]() Registriert seit: 10.01.2001
Beiträge: 478
|
![]() Wenn's nur darum geht, zu erkennen ob eine Anwendung läuft, bitte sehr:
'################################################# ################## Const MAX_PATH& = 260 Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szexeFile As String * MAX_PATH End Type Public Function ApplicationRunning(ApplicationPath As String) As Boolean ' Funktion ' Überprüft ob eine Application ausgeführt wird. Die Applikation wird ' anhand ihrer Executable erkannt (z.B. MYAPP.EXE). ' IN ' ApplicationPath Pfad zur Executable. Relevant ist aber nur die Executable selbst. ' RETURN ' ApplicationRunning TRUE wenn die Applikation bereits läuft, sonst FALSE. On Local Error GoTo Trap Const PROCESS_ALL_ACCESS = 0 Dim uProcess As PROCESSENTRY32 Dim rProcessFound As Long Dim hSnapshot As Long Dim szExename As String Dim exitCode As Long Dim myProcess As Long Dim AppKill As Boolean Dim appCount As Integer Dim i As Integer appCount = 0 ApplicationRunning = False Const TH32CS_SNAPPROCESS As Long = 2& uProcess.dwSize = Len(uProcess) hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) rProcessFound = ProcessFirst(hSnapshot, uProcess) Do While rProcessFound And Not ApplicationRunning i = InStr(1, uProcess.szexeFile, Chr(0)) szExename = LCase$(Left$(uProcess.szexeFile, i - 1)) If Right$(szExename, Len(ApplicationPath)) = LCase$(ApplicationPath) Then ApplicationRunning = True Else rProcessFound = ProcessNext(hSnapshot, uProcess) End If Loop Call CloseHandle(hSnapshot) Trap: End Function '################################################# ################## Wenn das ausgeführte Programm nicht sichtbar sein soll, dann musst du nur als "Startup Object" eine Prozedur anstatt eines Formulars angeben. |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|