Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.Net] Miglior modo per rilevare e forzare la chiusura di un processo

    Vorrei creare un piccolo tool per chiudere i processi bloccati, vorrei sapere qual è il metodo migliore rilevare il PID e/o il nome del processo... e poi quel è il modo migliore per terminarlo...

    Feci già qualcosa del genere con VB.Net, ma solo per ricavare il nome dei processi

  2. #2

  3. #3
    Ottimo, credo d'aver capito tutto.. ed a quanto pare posso anche verificare se il processo è stato terminato..

    È possibile fare qualcosa del genere anche con i servizi?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Un programma o un servizio non cambia molto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Sono riuscito a creare qualcosa, come mi consigli di fare per fare il refresh della lista dei processi? (questa lista l'ho messa in una listview...

    Io ho inserito un timer ed ho messo che mi ricarica il form, però cosi facendo il risultato è scomodo, io invece vorrei qualcosa di più fluido... mi spiego meglio, con questo metodo che utilizzo io si vede chiaramente che la lista dei processi viene azzerata e poi ricompilata

    C'è qualche metodo che posso provare oltre al
    codice:
    form1_load(nothing, nothing)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Intanto non devi chiamare il form_load ma devi scrivere una funzione/sub che riempie la listbox e la richiami da dove vuoi.

    Per il programma va bene il timer ... non capisco cosa non vada ... al massimo puoi utilizzare la memoria (un array, una lista) per ottenere le informazioni sui processi e solo quando è completa visualizzarla nella listbox ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Originariamente inviato da oregon
    Intanto non devi chiamare il form_load ma devi scrivere una funzione/sub che riempie la listbox e la richiami da dove vuoi.

    Per il programma va bene il timer ... non capisco cosa non vada ... al massimo puoi utilizzare la memoria (un array, una lista) per ottenere le informazioni sui processi e solo quando è completa visualizzarla nella listbox ...
    In teoria io ricarico il form però in pratica è la stessa cosa di richiamare la funziona in quanto il form ha solo queste istruzioni...
    Io ho anche un bottone che mi fa il clear della listview e poi me la riempie nuovamente però, sia se uso il metodo:
    codice:
    ListView1.Items.Clear()
    For Each processo In Process.GetProcesses(My.Computer.Name)
                On Error Resume Next
                ListView1.Items.Add(processo.ProcessName)
                conta += 1
    Next
    e sia se uso:
    codice:
    Frame1_Load(Nothing, Nothing)
    Ad ogni refresh vedo chiaramente che gli elementi vengono eliminati e poi reinseriti, io vorrei evitare questo effetto grafico poco elegante

  8. #8

  9. #9
    Originariamente inviato da cassano
    http://msdn.microsoft.com/en-us/libr...ginupdate.aspx
    Provando l'esempio non ho ancora ben capito se fa al caso mio oppure no... però vorrei evitare di utilizzare il Framework 4.5 cosi da rendere utilizzabile il programma anche su PC con Windows XP non aggiornati

  10. #10
    un'altra cosetta, perchè ogni tanto la listview mi sballa cioè io c'ho queste colonne:
    NOME PROCESSO - MB - STATO - DATA AVVIO - PID

    e capita che a volte non ho la "data avvio" di alcuni processi ed al posto di essa c'ho il PID e nella colonne del PID non ho niente...

    Che controllo posso aggiungere per evitare ciò??


    Il codice che uso è questo:
    codice:
    For Each processo In Process.GetProcesses(My.Computer.Name)
                On Error Resume Next
                ListView1.Items.Add(processo.ProcessName & ".exe")
    ListView1.Items(conta).SubItems.Add(FormatNumber(Math.Round(processo.PrivateMemorySize64 / 1024), 0))
                ListView1.Items(conta).SubItems.Add(processo.Responding)
                ListView1.Items(conta).SubItems.Add(processo.StartTime.ToString.Trim)
                ListView1.Items(conta).SubItems.Add(processo.Id)
                conta += 1
    Next
    Io come prova ho provato anche a mettere una condizione e scrivere:
    codice:
    if processo.StartTime.ToString.Trim <> "" then
    	ListView1.Items(conta).SubItems.Add(processo.StartTime.ToString.Trim)
    else
    	ListView1.Items(conta).SubItems.Add("")
    end if
    ho pensato: "Magari facendo cosi quando trova un valore voto invece di scrivermelo mi scrive un valore NULL" ma non funziona

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.