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

Fortgeschrittene Programmierung
Re: Prozess killen 
Autor: ari
Datum: 23.07.04 13:34

Du mußt zuerst die ProzessID der *.exe ermittelen. Das geht mit der Function IsExeRunning (Dieter sei Dank ) (siehe Tipps &Tricks)
Dann kannst du mit der API TerminateProcess das Teil beenden.

Im Einzelnen:
Public Declare Function CloseHandle Lib "kernel32" (ByVal _
   hObject As Long) As Long
 
Public Declare Function OpenProcess Lib "kernel32" (ByVal _
   dwDesiredAccess As Long, ByVal bInheritHandle As _
   Long, ByVal dwProcessId As Long) As Long
 
Public Declare Function TerminateProcess Lib "kernel32" (ByVal _
   hProcess As Long, ByVal uExitCode As Long) As Long
 
Private 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 Enum procReturnValue
  Handle = 0
  ProcessID = 1
End Enum
 
Const PROCESS_TERMINATE = &H1
 
Public Function IsEXERunning(ByVal sFilename As String, _
  Optional ByVal iReturn As procReturnValue = ProcessID) As Long
 
  Dim lSnapshot As Long
  Dim uProcess As PROCESSENTRY32
  Dim nResult As Long
 
  ' "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), LCase$(sFilename)) > 0 Then
        DoEvents
        ' Jepp - EXE gefunden
        If iReturn = Handle Then
          DoEvents
          IsEXERunning = ProcID2hWnd(uProcess.th32ProcessID)
        Else
          DoEvents
          IsEXERunning = uProcess.th32ProcessID
        End If
        DoEvents
        Exit Do
      End If
 
      ' nächster Prozess
      nResult = ProcessNext(lSnapshot, uProcess)
      DoEvents
    Loop
 
    ' Handle schliessen
    CloseHandle lSnapshot
  End If
End Function
 
Private Sub cmdTerminate_Click() 
          Dim lngPID As Long, hTask As Long, lResult As Long
          lngPID = IsEXERunning(<***Name deiner exe>***, ProcessID)
          If lngPID <> 0 Then
             hTask = OpenProcess(PROCESS_TERMINATE, 0&, lngPID)
             lResult = TerminateProcess(hTask, 0)
             lResult = CloseHandle(hTask)
          End if
End Sub
Da fehlen mit Sicherheit noch ein paar API Aufrufe für die Funktion IsExeRunning . Hol dir die mal bitte aus den T & T

cu

ari

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Prozess killen609steffe23.07.04 12:21
Re: Prozess killen411ari23.07.04 13:34

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