• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# sprawdzanie czy dany program jest uruchomiony

VPS Starter Arubacloud
0 głosów
1,220 wizyt
pytanie zadane 15 sierpnia 2016 w C# przez jankustosz1 Nałogowiec (35,880 p.)

WItam.

Szukam funkcji która zwróci czy program w danej ścieżce jest uruchomiony albo załadowany do ramu (chyba  to jedno i to samo). Może wicie jak takie coś osiągnąć? 

Patrzyłem na https://msdn.microsoft.com/pl-pl/library/system.diagnostics.process(v=vs.110).aspx ale nadal nie wiem jak się do tego zabrać.

5 odpowiedzi

+1 głos
odpowiedź 15 sierpnia 2016 przez KSYMEK Gaduła (3,280 p.)
wybrane 15 sierpnia 2016 przez jankustosz1
 
Najlepsza
using System.Runtime.InteropServices;

// Get a handle to an application window.
        [DllImport ( "USER32.DLL", CharSet = CharSet.Unicode )]
        public static extern IntPtr FindWindow ( string lpClassName,
            string lpWindowName );

// Activate an application window.
        [DllImport ( "USER32.DLL" )]
        public static extern bool SetForegroundWindow ( IntPtr hWnd );

public void Startbtn_Click ( object sender, EventArgs e ) {
            IntPtr Handle = FindWindow ( null, "app name" );

            //not found
            if ( Handle == IntPtr.Zero ) {
                MessageBox.Show ( "Niewykryto app name." );
                return;
            }
            //found
            SetForegroundWindow ( Handle );
            Thread farming = new Thread (() => Farming.StartFarming ()  );
            farming.Start();            
        }

 

komentarz 15 sierpnia 2016 przez KSYMEK Gaduła (3,280 p.)
Przepraszam za to formatowanie kodu
komentarz 15 sierpnia 2016 przez jankustosz1 Nałogowiec (35,880 p.)
Dzięki. Jedno pytanie app name to jest nazwa programu bez jego rozszerzenia?

np. jest program: "C:\jakasApka.exe" pod app name podstawić jakasApka?
komentarz 15 sierpnia 2016 przez KSYMEK Gaduła (3,280 p.)
tak
0 głosów
odpowiedź 15 sierpnia 2016 przez bartolinciu Dyskutant (7,580 p.)
Nie wiem czy o to dokładnie chodziło, ale tutaj jest przykład wyszukiwania uruchomionych procesów notatnika: https://msdn.microsoft.com/pl-pl/library/x8b2hzk8(v=vs.110).aspx
komentarz 15 sierpnia 2016 przez jankustosz1 Nałogowiec (35,880 p.)
Nie mam pojęcia jak tego użyć. aby znaleźć proces notatnika systemowego szuka się procesu o nazwie notepad no ok ale mam ścieżkę do jakiegoś pliku, skąd mogę wiedzieć jaką nazwę ma jego proces.

Jeszcze jedna rzecz. Jak jest jakiś program włączony i próbuje się go usunąć to wyskakuje komunikat że program jest uruchomiony, czyli da się to jakoś sprawdzić.
0 głosów
odpowiedź 15 sierpnia 2016 przez Sinnley Stary wyjadacz (12,810 p.)
Wprawdzie nie do końca znam C#, ale myślę, że możesz spróbować ustawić sobie jakiegoś boola, który będzie za to odpowiadał. Domyślnie będzie miał wartość false, a na początku będziesz go podmieniał na true.
0 głosów
odpowiedź 15 sierpnia 2016 przez Monsieur Użytkownik (760 p.)

Pisałem boty i inne bzdury i super była do tego biblioteka http://binarysharp.com/products/memorysharp/

Na szybko coś takiego:

using System;
using System.Diagnostics;
using System.Linq;
using Binarysharp.MemoryManagement;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var process = new MemorySharp(Process.GetProcessesByName("Firefox").FirstOrDefault());
                Console.WriteLine($"Jest. Jego PID: {process.Pid.ToString()}");
            }
            catch(NullReferenceException)
            {
                Console.WriteLine("Nie ma takiego procesu");
            }
        }
    }
}

 

0 głosów
odpowiedź 15 sierpnia 2016 przez jankustosz1 Nałogowiec (35,880 p.)
Skąd mam wiedzieć jak proces się nazywa? Program posiadam tylko ścieżkę do pliku czyli w jakim folderze się znajduje jaką ma nazwę i rozszerzenie.
komentarz 15 sierpnia 2016 przez KSYMEK Gaduła (3,280 p.)
Naprawdę nie rozumiem istnieje stackoverflow i nie jesteś w stanie użyć googla? Poczytaj dowiedz się: http://stackoverflow.com/questions/5497064/c-how-to-get-the-full-path-of-running-process http://stackoverflow.com/questions/11961137/getting-a-path-of-a-running-process-by-name http://stackoverflow.com/questions/980202/how-do-i-find-the-current-executable-filename a jak nie to pisz tam. Ja sam nie słyszałem żeby ktoś sprawdzał czy program działa po przez ścieżkę do pliku.
komentarz 15 sierpnia 2016 przez jankustosz1 Nałogowiec (35,880 p.)
Dzięki.

Podobne pytania

0 głosów
1 odpowiedź 107 wizyt
0 głosów
0 odpowiedzi 395 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...