Diskuze: C# - Get PROCESS by Name
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tak si vezmi více procesů a z nich třeba jenom ten první. Pokud vím, tak víc procesů může mít stejný název. Unikátní je myslím ID procesu. Jestli ti jde o 1 konkrétní proces, ber ho podle ID.
No jo.. ale ten proces to PID mění po dalším spuštění..
Tak pokud ti bezi vic procesu se stejnym jmenem, tak si musis vybrat, podle ceho vyberes ten jeden co chces
K čemu potřebuješ vybrat pouze jeden proces? Neexistuje funkce, ktera vybere jeden náhodný proces podle jména. Musíš vybrat procesy se jménem, potom random číslo ktere bude menší než počet procesů a vybrat tak nahodny proces. Osobně si myslím že toto nema praktické využití...
Ano, PID identifikuje (unikátně) každý proces za jeho běhu. A ano, "generuje" se nové pro každý nově spuštěný proces. Což znamená, že se nedá spoléhat na to, že by určitý proces měl pořád stejné PID při všech spuštěních – výjimku tvoří pseudoproces "Nečinné procesy systému" (PID = 0) a proces System (PID = 4).
Jméno procesu je jméno jeho souboru. Jelikož můžeš určitý soubor spustit vícekrát, můžeš mít i více procesů stejného jména. Jméno se tedy nedá použít jako jednoznačný identifikátor procesu. Zkus nám vysvětlit, čeho potřebuješ dosáhnout, protože třeba ten tvůj cílový proces půjde identifikovat nějak jinak.
namespace MemorySize
{
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
internal class Program
{
public static void Main()
{
Console.Title = "Best Meme Checker";
long num = 0L;
long num2 = 0L;
long num3 = 0L;
Process process = null;
try
{
process = '!' Tu potřebuju ten kód.. '!'
System.Threading.Thread.Sleep(5000);
do
{
if (!process.HasExited)
{
process.Refresh();
Console.WriteLine();
Console.WriteLine(" {0}", process.PagedSystemMemorySize64);
psm = process.PagedSystemMemorySize64;
num = process.PeakPagedMemorySize64;
num3 = process.PeakVirtualMemorySize64;
num2 = process.PeakWorkingSet64;
if (process.Responding)
{
Console.WriteLine("Status = Running");
}
else
{
Console.WriteLine("Status = Not Responding");
}
}
}
while (!process.WaitForExit(0x3e8));
Console.WriteLine();
Console.WriteLine("Process exit code: {0}", process.ExitCode);
}
finally
{
if (process != null)
{
process.Close();
}
}
}
}
}
jen stačí projít všechny běžící procesy a z nich si třeba přes linq vyfiltrovat ty se jménem co tě zajímá a pak vybrat ten jeden konkrétní, kde je problém?
Ten kód ještě není hotový, nebo jsi jej neposkytl celý, ale nevadí. Připadá mi, že děláš nějaký "hlídač". Jsi si jist, že chceš hlídat jen jednu instanci procesu - jedno spuštění té hlídané aplikace? Možná s tím počítáš, pak ti už odpověděl Petr Stastny před 2-mi dny a vlákno mohlo být uzavřeno. Pokud se věci mají jinak, popiš je - místní pomáhači nemají dostatek informací a nemohou ti tedy pomoci vice.
Zobrazeno 10 zpráv z 10.