Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  VBA-Excel-Process-Kill-aus-Taskmanager

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  VBA-Excel-Process-Kill-aus-Taskmanager (8434 mal gelesen)
Feyza
Mitglied



Sehen Sie sich das Profil von Feyza an!   Senden Sie eine Private Message an Feyza  Schreiben Sie einen Gästebucheintrag für Feyza

Beiträge: 605
Registriert: 12.01.2004

AutoCAD Mechanical 2006
Partsolution V8
Catia V5R14Sp4
Windows 2000/XP
VB6 / VB.NET /VisualStudio2005
Windows Server 2003
ASP.net

erstellt am: 19. Jul. 2007 09:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen an Alle,

wir möchten gerne einen Process, der im Taskmanager zu sehen ist, killen.
Unter .net sind sehr viele Beispiele im Internet, nur bei VBA - Excel haben wir nichts gefunden.
Könnt Ihr uns hier bitte weiterhelfen.

Danke für Eure Bemühungen.

------------------
Schöne Grüße
Feyza : )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Oberli Mike
Ehrenmitglied V.I.P. h.c.
Dipl. Maschinen Ing.



Sehen Sie sich das Profil von Oberli Mike an!   Senden Sie eine Private Message an Oberli Mike  Schreiben Sie einen Gästebucheintrag für Oberli Mike

Beiträge: 3728
Registriert: 29.09.2004

Excel 2010
128GB SSD
Windows 7

erstellt am: 19. Jul. 2007 09:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Feyza 10 Unities + Antwort hilfreich

Hallo Feyza,

Wie hatten mal das Problem, dass wir beim Start einer Applikation einen Prozesse killen
mussten. Wir verwendeten das pskill.exe, angesteuert über ein bat-File.
Ev. kannst du aus VBA ein bat File starten, im extremfall sogar zuerst erzeugen, dann
starten, und dann wieder löschen.

Gruss
Mike

------------------

The Power Of Dreams Schreib mal wieder

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Feyza
Mitglied



Sehen Sie sich das Profil von Feyza an!   Senden Sie eine Private Message an Feyza  Schreiben Sie einen Gästebucheintrag für Feyza

Beiträge: 605
Registriert: 12.01.2004

AutoCAD Mechanical 2006
Partsolution V8
Catia V5R14Sp4
Windows 2000/XP
VB6 / VB.NET /VisualStudio2005
Windows Server 2003
ASP.net

erstellt am: 19. Jul. 2007 10:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Mike,

danke Dir.

Beispiele us dem Internet:

  =AUSF("command /c c:\xyz.bat"; 1)
als Internationale Makrovorlage:  =EXEC("command /c c:\temp\xxx.bat",1)
VBA (VISUAL BASIC für Applikationen):  x = STARTE("command /c c:\xyz.bat"; 1)
oder in englisch:  x = SHELL("command /c c:\xyz.bat", 1)

Werden dies auch mit einer bat Datei umsetzten : ))

------------------
Schöne Grüße
Feyza : )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 19. Jul. 2007 17:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Feyza 10 Unities + Antwort hilfreich

Hallo,

mal zwei Beispiele.

1. Per API:

Code:
Option Explicit

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" ( _
    ByVal lFlgas As Long, _
    ByVal lProcessID As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" ( _
    ByVal hProcess As Long, _
    ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" ( _
    ByVal dwDesiredAccess As Long, _
    ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" ( _
    ByVal hSnapshot As Long, _
    ByRef uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" ( _
    ByVal hSnapshot As Long, _
    ByRef uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
    ByVal hObject 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 * 260
End Type

Private Const PROCESS_TERMINATE = &H1
Private Const GW_HWNDNEXT As Long = 2

Private Sub KillEXE(ByVal strEXEName As String)
    Dim lngHandle As Long, retVal As Long, hTask As Long, lResult As Long
    Dim pe32current As PROCESSENTRY32
    lngHandle = CreateToolhelpSnapshot(2&, 0&)
    If lngHandle <> 0 Then
        pe32current.dwSize = Len(pe32current)
        retVal = ProcessFirst(lngHandle, pe32current)
        Do While Not (retVal = 0)
            If InStr(1, pe32current.szexeFile, strEXEName, vbTextCompare) > 0 Then
                hTask = OpenProcess(PROCESS_TERMINATE, 0&, pe32current.th32ProcessID)
                lResult = TerminateProcess(hTask, 1&)
                lResult = CloseHandle(hTask)
                Exit Sub
            End If
            retVal = ProcessNext(lngHandle, pe32current)
        Loop
        CloseHandle lngHandle
    End If
End Sub

Public Sub test()
    Call KillEXE("sol.exe")
End Sub


2. Per WMI:

Code:
Sub test()
    Dim objWMI As Object, objProcessList As Object, objProcess As Object
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
        ".\root\cimv2")
    Set objProcessList = objWMI.ExecQuery("Select * from Win32_Process " & _
        "Where Name = 'sol.exe'")
    For Each objProcess In objProcessList
        objProcess.Terminate (0)
    Next
End Sub

Beide Beispiele beenden sol.exe (Solitär).

------------------
Gruß
Nepumuk 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Feyza
Mitglied



Sehen Sie sich das Profil von Feyza an!   Senden Sie eine Private Message an Feyza  Schreiben Sie einen Gästebucheintrag für Feyza

Beiträge: 605
Registriert: 12.01.2004

AutoCAD Mechanical 2006
Partsolution V8
Catia V5R14Sp4
Windows 2000/XP
VB6 / VB.NET /VisualStudio2005
Windows Server 2003
ASP.net

erstellt am: 20. Jul. 2007 08:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen Nepumuk,

danke Dir.
Das werde ich auch gleich testen 

------------------
Schöne Grüße
Feyza : )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

.

erstellt am: 20. Jul. 2007 09:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Feyza 10 Unities + Antwort hilfreich

Auch Hallo,

Weitere 2 Möglichkeiten:

1. mit pskill vom 'ehemaligen' Sysinternals reicht - falls dieses im Suchpfad liegt - auch ein:

Sub x()
  Shell "pskill sol.exe"
End Sub

http://www.microsoft.com/technet/sysinternals/default.mspx

2. Wenn man das Teil selber mit Shell gestartet hat kann man auch über die von shell zurückgelieferte Task-Id gehen.

Code:

Option Explicit

Private Declare Function OpenProcess Lib "kernel32" ( _
  ByVal dwDesiredAccess As Long, _
  ByVal bInheritHandle As Long, _
  ByVal dwProcessId As Long) As Long
 
Private Declare Function CloseHandle Lib "kernel32" ( _
  ByVal hObject As Long) As Long
 
Private Declare Function TerminateProcess Lib "kernel32" ( _
  ByVal hProcess As Long, _
  ByVal uExitCode As Long) As Long
 
Const PROCESS_TERMINATE = &H1

Sub StartIt()
  Dim lngTaskId As Long
 
  lngTaskId = Shell("notepad.exe")
  MsgBox "nach OK wird Notepad beendet"
  StopIt lngTaskId
End Sub

Sub StopIt(ByVal lngTaskId As Long)
  Dim lngHandle As Long
  Dim lngResult As Long
  Dim lngExitCode As Long
 
  If lngTaskId Then
      lngHandle = OpenProcess(PROCESS_TERMINATE, False, lngTaskId)
      If lngHandle Then
        lngResult = TerminateProcess(lngHandle, lngExitCode)
        lngResult = CloseHandle(lngHandle)
      End If
  End If
End Sub


cu, Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz