Sto, in questi giorni, per provare alcune funzionalità, provando a creare un tasck manager, come quello di windows, ma con alcuni cambiamenti, questo tasck manager, per ora, a due schede, la scheda Applicazione contenente una listview con tutti i processi con l'handle diverso da 0, insomma tutti quelli che creano un'interfaccia grafica visibile su schermo, ed il loro responde, mentre nell'altra scheda, la scheda Processi, una listview contenente tutti i processi, per ogni processo o il suo id, il nome, il proprietario ( da chi è stato eseguito il processo ) è la locazione sul disco ( recuperata tramite l'istruzione istanza_processo.MainModule.FileName ).
Prima di completare questa applicazione mi servono alcuni chiarimenti / aiuto, che ho provato a cercare su internet ma purtroppo non ho risolto:
Se vi occorre, entrambi le liste, sia quella per visualizzare le applicazione, che quella per i processi, li genero, per ora, all'avvio dell'applicazione con questo codice:
Ah.. quasi dimenticavo, è possibile recuperare l'icona prodotta dal processo per poi metterla negli item presente nella prima lista? ho già provato in vari modo, ora purtroppo non ricordo come, ma senza alcun risultato.
Prima di completare questa applicazione mi servono alcuni chiarimenti / aiuto, che ho provato a cercare su internet ma purtroppo non ho risolto:
- Dovrei aggiornare le due liste, contenente nella prima e nella seconda scheda, in tempo reale, non credo vada bene aggiornarla con un timer, visto che, quando si aggiorna, l'elemento della lista selezionato mi perde la selezione, quindi, presumo si faccia in altro modo?
- 2. nella prima scheda, quando ho aperta una qualsiasi cartella il nome dell'applicazione non mi esce ( il processo corrisponde a explorer.exe ), come potrei fare a far scrivere, in questo caso, il percorso aperto dall'esprola risorse ( non so se mi spiego )
- Nella lista processo ho la colonna proprietario ( chi esegue il processo ), come faccio a recuperare questa informazione
Se vi occorre, entrambi le liste, sia quella per visualizzare le applicazione, che quella per i processi, li genero, per ora, all'avvio dell'applicazione con questo codice:
Codice:
ListView1.Columns.Add("ID", 0)
ListView1.Columns.Add("Operazione", 299)
ListView1.Columns.Add("Stato", 100)
ListView2.Columns.Add("ID")
ListView2.Columns.Add("Nome immagine", 150)
ListView2.Columns.Add("Proprietario", 80)
ListView2.Columns.Add("Locazione sul disco", 200)
Dim p() As Process = System.Diagnostics.Process.GetProcesses
Dim appItems, prcItems, prcResponse
Dim icons As Icon
Dim imList As New ImageList()
count_process = 0
For Each pr As Process In p
If pr.Responding = True Then
prcResponse = New String("In eseguzione..")
Else
prcResponse = New String("Non risponde.")
End If
If pr.MainWindowHandle <> 0 And pr.ProcessName <> "explorer" Then
appItems = New ListViewItem({pr.Id, pr.MainWindowTitle, prcResponse})
'icons = Icon.ExtractAssociatedIcon()
ListView1.Items.Add(appItems)
End If
Try
prcItems = New ListViewItem({pr.Id, pr.ProcessName, "-", pr.MainModule.FileName})
Catch
prcItems = New ListViewItem({pr.Id, pr.ProcessName, "-", "-"})
End Try
ListView2.Items.Add(prcItems)
prcResponse = Nothing
icons = Nothing
count_process += 1
Next
Ah.. quasi dimenticavo, è possibile recuperare l'icona prodotta dal processo per poi metterla negli item presente nella prima lista? ho già provato in vari modo, ora purtroppo non ricordo come, ma senza alcun risultato.