Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

terminare un processo in vb (mal funzionamenti)

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

terminare un processo in vb (mal funzionamenti)

Messaggioda KillerPenguin » dom apr 15, 2012 3:34 pm

salve, cercando su google come fare per interrompere dei processi tramite vb ho trovato questo codice:
Codice: Seleziona tutto
Dim oLoc
        Dim oServ
        Dim oObjectSet
        Dim oProc
        Dim sWQL As String

        sWQL = "SELECT * FROM Win32_Process WHERE Name = 'co569k4l.tmp'"
        oLoc = CreateObject("WbemScripting.sWbemLocator")
        oServ = oLoc.ConnectServer(".", "root\cimv2")
        oObjectSet = oServ.ExecQuery(sWQL)
        For Each oProc In oObjectSet
            oProc.Terminate()
        Next


è totalmente funzionante, però io dovrei fare in modo di definire il nome del processo dei caratteri jolly. ho provato in questo modo:
Codice: Seleziona tutto
Dim oLoc
        Dim oServ
        Dim oObjectSet
        Dim oProc
        Dim sWQL As String

        sWQL = "SELECT * FROM Win32_Process WHERE Name = 'co*.tmp'"
        oLoc = CreateObject("WbemScripting.sWbemLocator")
        oServ = oLoc.ConnectServer(".", "root\cimv2")
        oObjectSet = oServ.ExecQuery(sWQL)
        For Each oProc In oObjectSet
            oProc.Terminate()
        Next

ma non va. Credo che il metodo in questione non accetta un percorso con wildcard ( come in questa discussione http://www.MegaLab.it/forum/topic76505.html ) che metodo uso?
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: terminare un processo in vb (mal funzionamenti)

Messaggioda Andy94 » dom apr 15, 2012 4:12 pm

Nessuno, non sempre si può fare. [;)]
In questo caso devi conoscere precedentemente il jolly da utilizzare in quel momento, quindi dovrai trovare un modo per ottenerlo e compilare la stringa di conseguenza.

[ciao]
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: terminare un processo in vb (mal funzionamenti)

Messaggioda KillerPenguin » dom apr 15, 2012 4:55 pm

[uhm] tempo fa quest'operazione la facevo con uno script cmd
Codice: Seleziona tutto
taskkill /f /im "setup.exe" /t

in questo modo avveniva un interruzione forsata ( /f)
del processo indicato e di tutti i processi "figli" ( /t)

ora siccome ho cominciato a "programmare " in VB vorrei compiere la stessa operazione in questo nuovo linguaggio (so che il dos non è un linguaggio) . Ovviamente non vorrei utilizzare la shell per eseguire il comando dal promtp. qualcuno sa tradurmi la riga nel complesso linguaggio del visual basic? [prego]
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am


Re: terminare un processo in vb (mal funzionamenti)

Messaggioda M@ttia » dom apr 15, 2012 5:12 pm

Innanzitutto, sempre basandomi sull'altra discussione, dove ti spiegavo come verificare se un processo esiste o no (avevamo creato l'array ListaProcessi con tutte le istanze di notepad), per killare i processi ti basta semplicemente fare:
Codice: Seleziona tutto
For Each p As Process In ListaProcessi
   p.Kill()
Next

anziché tutto il bloccone scritto sopra da te [;)]


Detto questo, non so come (se?) in VB si possano usare le wildcard, ma posso dirti che, se come nel tuo esempio sopra ti basta sapere se il processo inizia con una data sequenza di lettere, allora puoi fare a meno delle wildcard.

Supponiamo che, similmente al notepad sopra, abbiamo creato un array ListaProcessi contenente vari processi, e vogliamo killare tutti quelli che iniziano con mic (microfono.exe, microsoft Word 2010, ...). Allora:
Codice: Seleziona tutto
For Each p As Process In ListaProcessi
   If p.ProcessName.StartsWith("mic"))
      p.Kill()
   End If
Next


Allo stesso modo esistono poi StartsWith(), EndsWith(), Contains(), ... con i quali, combinandoli (AND, OR, NOT, ...) e giochicchiandoci un po', puoi sopperire alla mancanza di wildcard per i casi non troppo complessi... (qui la LISTA completa di tutte le operazioni che esistono per le stringhe di testo) [^]
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: terminare un processo in vb (mal funzionamenti)

Messaggioda KillerPenguin » dom apr 15, 2012 6:39 pm

perfetto vi ringrazio infinitamente [grazie]
P.S. la variabile doveva contenere questo vero?
Codice: Seleziona tutto
Dim ListaProcessi() As Process = Process.GetProcesses
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: terminare un processo in vb (mal funzionamenti)

Messaggioda Andy94 » dom apr 15, 2012 7:06 pm

Esattamente. [^]
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: terminare un processo in vb (mal funzionamenti)

Messaggioda M@ttia » dom apr 15, 2012 8:01 pm

Sì per averli tutti:
Codice: Seleziona tutto
Dim ListaProcessi() As Process = Process.GetProcesses()

(non dimenticare le parentesi aperte-chiuse alla fine come sopra!)
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: terminare un processo in vb (mal funzionamenti)

Messaggioda KillerPenguin » lun apr 16, 2012 11:21 am

M@ttia ha scritto:Sì per averli tutti:
Codice: Seleziona tutto
Dim ListaProcessi() As Process = Process.GetProcesses()

(non dimenticare le parentesi aperte-chiuse alla fine come sopra!)


VB non me le ha messe in automatico [uhm] comunque le metto lo stesso. come mai si mettono?
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: terminare un processo in vb (mal funzionamenti)

Messaggioda M@ttia » lun apr 16, 2012 3:40 pm

Killer Penguin ha scritto:VB non me le ha messe in automatico [uhm] comunque le metto lo stesso. come mai si mettono?
Perché è una funzione, chiamata in questo caso senza parametri, ma ogni funzione ha sempre la forma nomefunzione(parametro1, parametro2, ...).
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

R: terminare un processo in vb (mal funzionamenti)

Messaggioda KillerPenguin » lun apr 16, 2012 4:50 pm

Ah, ok capito. Grazie :grin:

Inviato dal mio LG Optimous One
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising