Wie kann ich mit Visual Basic Prozesse beenden?

  • Themenstarter Themenstarter @_on
  • Beginndatum Beginndatum
@

@_on

Guest
Also ich hab das schon gesucht überall und auch was gefunden nur ich werd nich schlau draus oder ich überseh das was!?!?( naja kann mir jemand nur als beispiel mal den code fürs beenden von der explorer.exe oder so geben? am besten wenn man das zu beendende programm in nen textfenster schreiben könnte das man nachher sich das aussuchen kann was er beendet! wär echt nett danke ths @on
:rolleyes:
 
easy!

Code:
        Dim proc As System.Diagnostics.Process
        Dim pList() As Process

        pList = Process.GetProcessesByName("explorer.exe")
        For Each proc In pList
            proc.Kill()
        Next

naja mit einem textfenster kannst das auch easy machen...

angenommen die textbox heißt eingabe... dann wär der code so:

Code:
        Dim proc As System.Diagnostics.Process
        Dim pList() As Process

        pList = Process.GetProcessesByName(eingabe.text)
        For Each proc In pList
            proc.Kill()
        Next

falls du ein anfänger in vb bist dann:

mach eine textbox nenn sie eingabe

mach einen button egal wie du ihn nennst..

doppelklick auf den button und dann den oben geschriebenen code eingeben... thats it

is übrigens in vb.net geschrieben kA wies mim 6er geht
 
FÜr welche VB Version ist der code geschrieben

ich habe da mal eine frage, ich habe das gleiche Problem
ich habe den code mal in VB6 ausprobiert und er geht natürlich nicht, also frage ich mich für welche vb variante ist der code ... ?

ich habe mal teile des Codes GeGoogelt und ich würde das eher in die .Net einsortieren ? ist das richtig ?

Gibt es das auch als VB6 Variante ?
ich habe einen Code gefunden .... aber ... und da ist wieder das aber ....
Er funzt nur unter Win9x also unbrauchbar ...
Hier der Code:

Code:
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text1"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Private Declare Function WaitForSingleObject Lib "kernel32" _
        (ByVal hHandle As Long, ByVal dwMilliseconds As Long) _
        As Long

Private Declare Function CloseHandle Lib "kernel32" _
        (ByVal hObject 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 TerminateProcess Lib "kernel32" (ByVal _
        hProcess As Long, ByVal uExitCode As Long) As Long

Const INFINITE = -1&
Const SYNCHRONIZE = &H100000

Private Sub Form_Load()
  Text1.Text = 1000
End Sub

Private Sub Command1_Click()
  Dim Task&, Handle&, Result&
  
    Task = Shell("notepad.exe", vbNormalFocus)
    Handle = OpenProcess(SYNCHRONIZE, False, Task)
    
    Result = WaitForSingleObject(Handle, CLng(Text1.Text))
    AppActivate Me.Caption
    
    If Result Then
      Result = TerminateProcess(Handle, 0)
      Result = CloseHandle(Handle)
      MsgBox "Durch das Programm geschlossen"
    Else
      MsgBox "Durch den Anwender geschlossen"
    End If
End Sub

oder gibt es eine möglichkeit den code an XP (also NT Systeme) anzupassen ?
Ich habe schon Stundenlang gesucht und euer ansatz war bis jetzt der vielversprechenste .. !!
also jamand eine idee ?
 
Vb 2008

Hi. Ich wollte fragen ob mir jemand diesen Code fürs VB 2008 schreiben könnte da ich noch ein Anfänger bin. Wäre echt super wenn ich wieder ein Stück weiter komme. Danke im Vorraus für Antworten. Freundliche Grüße Luc_1320
 
@Luc_1320:
Es ist schlechtes Benehmen einen alten Thread wieder zum Leben zu erwecken.
Darüber hinaus sollte man für seperate anliegen seperate Threads aufmachen.
Aber es gibt mit sicherheit jemanden der dort helfen kann ansonsten googeln.
BTW:
Wenn du Anfänger bist, solltest du dich ernsthaft damit beschäftigen wollen lerne C#.
Die IDE gibt es auch kostenlos, und man kann leichter auf C/C++, etc. umsteigen und die darunterliegende Basis ist auch .NET.
 
@Flufy
Tut mit Leid. Das wusste ich nicht. Trotzdem Danke für deine Tips. Werde versuchen eine separaten thread zu eröffnen. Schönen Abend noch.
 
.... außerdem ist der o.g. Code (Chrisiaut, Freedom) eigentlich von VB2005 bis VB2012 verwendbar (sehe spontan zumindest nichts, was dagegen spricht).
 
(sehe spontan zumindest nichts, was dagegen spricht).
OpenProcess ohne korrekte Flags ;).
Aber prinzipiell müssten die API Aufrufe
Code:
hProcess = OpenProcess(PROCESS_TERMINATE, False); TerminateProcess(hProcess)
(nur in VB Syntax umgeschrieben) gehen.

Wobei man auch einfach Systemtools wie "tasklist/taskkill" a la
Code:
taskkill /IM "programm.exe"
verwenden könnte :) (ich kann mich auch ganz dunkel daran erinnern, dass es mal von sysinternals "pskill" gab und wahrscheinlich immer noch gibt).
 
Zurück
Oben