NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
Neaktivní uživatel:23.10.2017 21:02

Ahoj, snažím se získat 1 proces díky jména..
Ale všude vidím jen získání více procesů..

Odpovědět
23.10.2017 21:02
Neaktivní uživatelský účet
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Petr Šťastný:23.10.2017 21:08

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.

 
Nahoru Odpovědět
23.10.2017 21:08
Avatar
Odpovídá na Petr Šťastný
Neaktivní uživatel:23.10.2017 22:00

No jo.. ale ten proces to PID mění po dalším spuštění..

Nahoru Odpovědět
23.10.2017 22:00
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Luboš Běhounek Satik:23.10.2017 22:41

Tak pokud ti bezi vic procesu se stejnym jmenem, tak si musis vybrat, podle ceho vyberes ten jeden co chces :)

Nahoru Odpovědět
23.10.2017 22:41
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Neaktivní uživatel
David Moškoř:23.10.2017 22:49

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í...

Nahoru Odpovědět
23.10.2017 22:49
Život je příliš krátký na to, abyste vymýšleli smysluplné názvy proměnných...
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Martin Dráb:24.10.2017 0:40

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.

Nahoru Odpovědět
24.10.2017 0:40
2 + 2 = 5 for extremely large values of 2
Avatar
Neaktivní uživatel:24.10.2017 16:46
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();
                }
            }
        }
    }
}
Editováno 24.10.2017 16:46
Nahoru Odpovědět
24.10.2017 16:46
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Luboš Běhounek Satik:24.10.2017 17:13

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? :)

Nahoru Odpovědět
24.10.2017 17:13
https://www.facebook.com/peasantsandcastles/
Avatar
zelvicek
Člen
Avatar
Odpovídá na Neaktivní uživatel
zelvicek:25.10.2017 7:30

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.

 
Nahoru Odpovědět
25.10.2017 7:30
Avatar
Shade
Člen
Avatar
Shade:25.10.2017 9:25
Process proc = Process.GetProcessesByName("name").FirstOrDefault();

nebo třeba taky

Process proc = Process.GetProcessesByName("name")[0];
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.10.2017 9:25
Talk is cheap. Show me the code.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.