+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

VB 2008 - killare 2 processi insieme

  1. #1
    Ale-vb2008 non  in linea Novello
    Ciao,
    volevo creare un eseguibile per killare qualsiasi file senza usare il task manager... allora ho creato una widows for e ho messo un comand buttone uan textbox e questo codice:
    Dim PrcProcesso As System.Diagnostics.Process()
            Do
                PrcProcesso = Process.GetProcessesByName(TextBox1.Text)
                If (PrcProcesso.Length > 0) Then
                    PrcProcesso(0).Kill()
                    System.Threading.Thread.Sleep(300)
                End If
            Loop While (PrcProcesso.Length > 0)
        End Sub
    
    scrivevo il nome dle processo nella textbox e me lo killava pero volevo modificarlo e fare in modo che ne killi uno specifico quidi ho tolto textbox e ho scritto tra le virgolette il nome del processo che voglio killare... poi avevo deciso che volevo killarne 2 insieme ma non me li fa killare il codice he ho scritto per killarli tutti e due e questo:
    Dim PrcProcesso As System.Diagnostics.Process()
            Do
                PrcProcesso = Process.GetProcessesByName("topolino" & "pippo")
                If (PrcProcesso.Length > 0) Then
                    PrcProcesso(0).Kill()
                    System.Threading.Thread.Sleep(300)
                End If
            Loop While (PrcProcesso.Length > 0)
        End Sub
    
    [/CODE]
    sapete aiutarmi?

  2. #2
    1. Direi che abbastanza sbagliato tanto il primo quanto il secondo approccio al problema.
    Dal momento che il Metodo .GetProcessesByName restituisce gi una collezione di Process, basterebbe un ciclo For Each sulla collezione restituita :
    For Each P As Process In Process.GetProcessesByName("topolino")
       ...
       ...
    Next
    For Each P As Process In Process.GetProcessesByName("pippo")
       ...
       ...
    Next
    
    Invece vedo che tu usi un Do Loop e prendi ogni volta l'eventuale elemento a indice 0.

    2. Concatenare in argomento il nome dei due processi :
    PrcProcesso = Process.GetProcessesByName("topolino" & "pippo")
    
    ti porta semplicemente a cercare un ipotetico processo "topolinopippo"...

    3. Alcuni esempi da MSDN :
             ' Get all instances of Notepad running on the local computer.
             Dim localByName As Process() = Process.GetProcessesByName("notepad")
    
             ' Get all instances of Notepad running on the specific computer.
             ' 1. Using the computer alias (do not precede with "\\").
             Dim remoteByName As Process() = Process.GetProcessesByName("notepad", "myComputer")
    
             ' 2. Using an IP address to specify the machineName parameter. 
             Dim ipByName As Process() = Process.GetProcessesByName("notepad", "169.0.0.0")
    
             ' Get all processes running on the local computer.
             Dim localAll As Process() = Process.GetProcesses()
    
    ℹ️ Leggi di pi su MarcoGG ...

  3. #3
    Ale-vb2008 non  in linea Novello
    grazie per la risposta in conclusione non funziona perche invece di cercare due processi separati unisce i nomi e li cercxa tutti e due insieme? e potresti scrivermi il codice intero completo? grazie mille in anticipo

  4. #4
    Quote Originariamente inviato da Ale-vb2008 Visualizza il messaggio
    in conclusione non funziona perche invece di cercare due processi separati unisce i nomi e li cercxa tutti e due insieme?
    Non so cosa intendi per : li cerca tutti e due insieme.
    Pensavo fosse chiaro : cerca un unico processo il cui nome la concatenazione dei nomi dei 2 processi passati in argomento. Quindi, in soldoni : cerca il processo sbagliato.

    Quote Originariamente inviato da Ale-vb2008 Visualizza il messaggio
    e potresti scrivermi il codice intero completo? grazie mille in anticipo
    Semplice :
    For Each P As Process In Process.GetProcessesByName("topolino")
            P.Kill()
            System.Threading.Thread.Sleep(300)
    Next
    For Each P As Process In Process.GetProcessesByName("pippo")
            P.Kill()
            System.Threading.Thread.Sleep(300)
    Next
    
    - La Sleep la stessa che hai inserito tu. L'ho solo riportata e non entro nel merito di questa tua scelta.
    - Killare brutalmente un processo sempre un'operazione delicata, perci il mio codice va preso come soluzione necessaria ma non sufficiente. Bisognerebbe sempre aggiungere una certa gestione delle possibili eccezioni... Intanto vedi se funge.
    ℹ️ Leggi di pi su MarcoGG ...

  5. #5
    Ale-vb2008 non  in linea Novello
    ok grazie mille confrontando il tuo codice con il mio vedo che il mio codice ha diverse parti inutili... ma strano... comunque grazie ora lo provo

  6. #6
    Ale-vb2008 non  in linea Novello
    ok funziona grazie mille

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. acquisire un insieme in c
    Da visen nel forum C/C++
    Risposte: 3
    Ultimo Post: 24-05-2015, 20:46
  2. Cambiare pi immagini insieme
    Da maso989 nel forum Microsoft Excel
    Risposte: 10
    Ultimo Post: 21-08-2013, 01:38
  3. Imparare C# e php insieme...ma asp.net?
    Da TeGlider nel forum C#
    Risposte: 1
    Ultimo Post: 14-07-2010, 19:54
  4. killare processo excel
    Da misonsan nel forum ASP 3, ASP .Net
    Risposte: 0
    Ultimo Post: 21-01-2009, 23:18
  5. Installare xp insieme a vista
    Da dolphin2382 nel forum Microsoft Windows
    Risposte: 5
    Ultimo Post: 31-01-2008, 18:52