Sto cercando di scoprire se un'istanza di un'applicazione (non vb.net) è già in esecuzione, perché vorrò avviarla ma non voglio avviarla se è già in esecuzione. Ho trovato una soluzione per controllare se un processo è in esecuzione:Come si ottiene l'elenco dei nomi dei processi in esecuzione, in VB.NET?
Dim proc As Integer = Process.GetProcessesByName(ProcessName).GetUpperBound(0) + 1
e restituire True se> = 1 (o semplicemente il numero di processo).
Il mio problema è, questa è un'applicazione di terze parti, e il suo nome di processo non è solo un nome ma contiene un numero di versione (che potrei non sapere in fase di esecuzione), e sembra anche aggiungere un * 32 (quindi probabilmente un * 64 se è installato in x64?).
Ho bisogno di ottenere un elenco di processi in esecuzione, per nome, e verificare se "processname" è una sottostringa del nome. Ma non sono riuscito a ottenere un elenco di nomi, solo gli ID di processo.
Ho provato questo ma "Qualsiasi" non funziona. Grazie per aver spiegato il * 32. – Thalia
@emptyheaded Basta aggiungere "Import System.Linq" nella parte superiore del file, e Any dovrebbe funzionare. È un metodo di estensione LINQ (http://msdn.microsoft.com/en-us/library/bb534972.aspx) –
@Reed Copsey: non dovrebbe essere "p.ProcessName.Contains" anziché p.Name.Contains? E non sono sicuro se. Qualunque sia il caseintensitivo. Altrimenti, qualche altro .ToUpper potrebbe essere utile per cercare il processname? – PeterCo