Textbox KillProcess

  • VB.NET
  • .NET 4.5

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Textbox KillProcess

    Hallo,

    irgendwie bin ich gerade total überfordert. Bin Einsteiger und habe folgendes Problem:

    Ich habe eine Textbox, und will das man Prozesse beenden kann indem man in die TextBox schreibt "taskkill " + Anwendungsname. Allerdings mache ich das über das e.KeyData Event, also wenn ich Enter drücke soll der Prozess beendet werden, ähnlich wie bei CMD wenn man /taskkill <Anwendung> schreibt. Ich habe wirklich alles versucht, und im Internet finde ich auch keine Lösung.

    Hier ein Sub, mit dem ich irgendwie versucht habe es hinzubekommen:

    Quellcode

    1. Public Sub KillProcess(ByRef ProcessToKill As String)
    2. Dim proc() As Process = Process.GetProcesses
    3. For i As Integer = 0 To proc.GetUpperBound(0)
    4. If proc(i).ProcessName = ProcessToKill Then
    5. proc(i).Kill()
    6. End If
    7. Next
    8. End Sub


    Quellcode

    1. If TextBox1.Text = "/taskkill " And TextBox1.Text = KillProcess() '??????
    2. End If


    Bin echt überfordert, und würde mich freuen wenn ihr mir helfen könntet? Ich verzweifel langsam ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „crashoverride“ ()

    Der Erstcode ist ok. Das Zweite ist murks. Das geht über ne String-Verknüpfung im Sinne von:

    VB.NET-Quellcode

    1. If TextBox1.Text.StartsWith("/taskkill ") Then KillProcess(TextBox1.Text.SubString(10, TextBox1.Text.Length - 10))

    (aus'm Kopf heraus; das mit SubString ist einfach nur: "Schneid mir den Textteil "/taskkill" ab")
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    ProTip: Wenn Du den zweiten Parameter von SubString weglässt, dann wird automatisch der Rest des Strings bis zum Ende zurückgegeben. Dann spart man sich die Subtraktion und dann ist es auch nicht so unschön, wenn man sowas macht:

    VB.NET-Quellcode

    1. If TextBox1.Text.StartsWith("/taskkill ") Then KillProcess(TextBox1.Text.SubString("/taskkill ".Length))
    2. 'Oder noch schöner:
    3. Const SearchText = "/taskkill "
    4. If TextBox1.Text.StartsWith(SearchText) Then KillProcess(TextBox1.Text.SubString(SearchText.Length))
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @crashoverride Lass dies (nicht Lass das!).
    Du müsstest noch testen, ob es einen Prozess dieses Namens ühaupt gibt, denn ich habe gehört, dass sich gelegentlich gaaaaanz wenige User verschreiben, wenn sie einen Makrobefehl eintippen.
    Besser wäre es, wenn Du die vorhandenen (Fenster-)Prozesse auflistest und dann drauf klicken lässt, um den zu beendenden Prozess auszuwählen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:


    Besser wäre es, wenn Du die vorhandenen (Fenster-)Prozesse auflistest und dann drauf klicken lässt, um den zu beendenden Prozess auszuwählen.


    @RodFromGermany nennt man sowas nicht Task-Manager?

    @crashoverride du kannst auch die Prozesse eleminieren, wenn du nur nen Teil eingegeben hast, das hätte dann eventuell tatsächlich Vorteile gegenüber dem Task-Manager. Ich würde aber ggf. noch ne Messagebox werfen mit dem Namen des gefundenen Prozesses und der Rückfrage ob dieser tatsächlich beendet werden soll.

    VB.NET-Quellcode

    1. Private Sub KillProcess(ByRef ProcessToKill As String)
    2. Dim proc() As Process = Process.GetProcesses
    3. For i As Integer = 0 To proc.GetUpperBound(0)
    4. If proc(i).ProcessName.Contains(ProcessToKill) Then
    5. proc(i).Kill()
    6. End If
    7. Next
    8. End Sub

    Narretei schrieb:

    nennt man sowas nicht Task-Manager?
    Ein winzig klein Teil von groß Task Manager. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!