vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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: Task beenden 
Autor: Anubis
Datum: 17.03.04 11:22

Hi das müste gehen. Einfach in ein Modul kopieren.
Option Explicit
 
'--- Funktionen für Windows NT - erfordern ISAPI.DLL ---
 
Private Declare Function EnumProcesses _
  Lib "psapi.dll" _
  ( _
  ByRef lpidProcess As Long, _
  ByVal cb As Long, _
  ByRef cbNeeded As Long _
  ) _
As Long
 
Private Declare Function GetModuleFileNameEx _
  Lib "psapi.dll" _
  Alias "GetModuleFileNameExA" _
  ( _
  ByVal hProcess As Long, _
  ByVal hModule As Long, _
  ByVal ModuleName As String, _
  ByVal NameSizeM As Long _
  ) _
As Long
 
Private Declare Function EnumProcessModules _
  Lib "psapi.dll" _
  ( _
  ByVal hProcess As Long, _
  ByRef lphModule As Long, _
  ByVal cb As Long, _
  ByRef cbNeeded As Long _
  ) _
As Long
 
Private Declare Function OpenProcess _
  Lib "Kernel32.dll" _
  ( _
  ByVal dwDesiredAccessas As Long, _
  ByVal bInheritHandle As Long, _
  ByVal dwProcId As Long _
  ) _
As Long
 
Private Declare Function CloseHandle _
  Lib "Kernel32.dll" _
  ( _
  ByVal Handle As Long _
  ) _
As Long
 
Private Declare Function TerminateProcess _
  Lib "kernel32" _
  ( _
  ByVal hProcess As Long, _
  ByVal uExitCode As Long _
  ) _
As Long
 
Private Const MAX_PATH = 260
Private Const PROCESS_TERMINATE = &H1
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or _
  &HFFF
 
 
Public Function KillProcess(strProc As String) As Boolean
 
  Const MAX_PROCESSES = 256   ' entspricht 256 Prozessen
  Const MAX_MODULES = 128     ' entspricht 128 Modulen pro Prozess
 
  Dim lRet As Long, i As Long
  Dim ArraySizeP As Long, BytesNeededP As Long, NumProcesses As Long
  Dim ArraySizeM As Long, BytesNeededM As Long, NameSizeM As Long
  Dim ProcessIDs(1 To MAX_PROCESSES) As Long
  Dim Modules(1 To MAX_MODULES) As Long
  Dim strModuleName As String
  Dim hProcess As Long
 
  ArraySizeP = MAX_PROCESSES * 4                ' je 4 Bytes pro Prozess 
  ' reservieren
  ArraySizeM = MAX_MODULES * 4                  ' je 4 Bytes pro Modul 
  ' reservieren
  lRet = EnumProcesses(ProcessIDs(1), ArraySizeP, BytesNeededP)
  NumProcesses = BytesNeededP / 4               ' Anzahl der vorhandenen 
  ' Prozesse berechnen
 
  For i = 1 To NumProcesses                     ' alle Processe untersuchen
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, ProcessIDs(i))
    If hProcess <> 0 Then
      lRet = EnumProcessModules(hProcess, Modules(1), ArraySizeM, BytesNeededM)
      If lRet <> 0 Then
        strModuleName = Space(MAX_PATH)
        NameSizeM = Len(strModuleName)
        lRet = GetModuleFileNameEx(hProcess, Modules(1), strModuleName, _
          NameSizeM)
        If LCase(GetExeName(Left(strModuleName, lRet))) = LCase(strProc) Then
          lRet = TerminateProcess(hProcess, 0)
          lRet = CloseHandle(hProcess)
          KillProcess = True               ' Übereinstimmung, Prozeß wurde 
          ' terminiert
          Exit Function
        End If
      End If
    End If
    lRet = CloseHandle(hProcess)
  Next
  KillProcess = False                      ' keine Übereinstimmung, nicht 
  ' gefunden
End Function
 
Private Function GetExeName(ByVal strModName As String) As String
 
  Dim iBSPos As Integer
  iBSPos = InStr(1, StrReverse(strModName), "\", vbTextCompare)
  GetExeName = Right(strModName, iBSPos - 1)
 
End Function
Aufrufen tust dus mit
KillProcess(Deine EXE oder Programm)
cu
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Task beenden907Stolen17.03.04 10:29
Re: Task beenden870Anubis17.03.04 11:22
Re: Task beenden586Stolen17.03.04 11:26

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