Sto cercando di ottenere l'elenco di tutte le applicazioni aperte. In particolare, se apri il task manager e vai alla scheda Applicazioni, quella lista.Ottenere un elenco di tutte le applicazioni
Ho provato con qualcosa di simile:
foreach (var p in Process.GetProcesses())
{
try
{
if (!String.IsNullOrEmpty(p.MainWindowTitle))
{
sb.Append("\r\n");
sb.Append("Window title: " + p.MainWindowTitle.ToString());
sb.Append("\r\n");
}
}
catch
{
}
}
Come in alcuni esempi che ho trovato, ma questo non tirare tutte le applicazioni per me. Mi piace solo la metà di quelli che posso vedere nel task manager o che so di avere aperto. Ad esempio, questo metodo non rileva Notepad ++ o Skype per qualche motivo, ma raccoglie Google Chrome, Calcolatrice e Microsoft Word.
Qualcuno sa o perché questo non funziona correttamente o come farlo?
Inoltre, un amico ha suggerito che potrebbe essere un problema di autorizzazioni, ma sto eseguendo Visual Studio come amministratore e non è cambiato.
EDIT: Il problema che sto ottenendo è che la maggior parte delle soluzioni che ho ricevuto restituisce solo un elenco di TUTTI i processi, che non è quello che voglio. Voglio solo le applicazioni o le finestre aperte, come l'elenco che appare sul task manager. Non un elenco di ogni singolo processo.
Inoltre, so che qui c'è del codice errato, incluso il blocco di blocco vuoto. Questo è stato un progetto buttato via per capire come funziona in primo luogo.
probabile perché quelle applicazioni non hanno un titolo finestra principale. – cgTag
se si programma ha un Titolo finestra principale si potrebbe fare qualcosa come questo processo Chris [] processes = Process.GetProcesses(); foreach (var proc nei processi) { if (! String.IsNullOrEmpty (proc.MainWindowTitle)) Console.WriteLine (proc.MainWindowTitle); } potresti anche usare 'WMI' http://msdn.microsoft.com/en-us/library/windows/desktop/aa394599%28v=vs.85%29.aspx – MethodMan
Stai guardando il codice? stai copia-e-incolla? –