Próbuję utworzyć aplikację, która wykona akcje w określonych godzinach (podobnie jak Harmonogram zadań systemu Windows). Obecnie używam Process.Start(), aby uruchomić plik (lub exe) wymagany przez zadanie.Proces Kill rozpoczął się od System.Diagnostic.Process.Start ("FileName")
Inicjuję proces, wywołując plik (.mp3), a proces rozpoczyna się od WMP (ponieważ jest to aplikacja domyślna). Jak na razie dobrze. Teraz chcę zabić ten proces. Wiem, że to normalne zachowanie dla Process.Start (ciąg, ciąg), aby zwrócić nic (null w C#) w tym przypadku.
Pytam więc, w jaki sposób można zamknąć WMP, gdy wywołałem go przez Process.Start (ciąg, ciąg)?
Edit:
Należy pamiętać, że nie jestem otwierając WMP bezpośrednio z Process.Start() i jest to linia, z którymi mogę uruchomić proces:
VB: Me._procs.Add (Process.Start (Me._procInfo))C# this._procs.Add (Process.Start (this._procInfo))
_procInfo jest wystąpienie ProcessStartInfo. _procInfo.FileName to "C: \ route \ myFile.mp3". Właśnie dlatego otwiera się WMP. W każdym przypadku wszystkie metody Start(), z wyjątkiem instancji zwracającej wartość logiczną, nie zwracają niczego (null w języku C#), ponieważ WMP nie jest procesem, który został bezpośrednio utworzony (należy pamiętać, że WMP jest uruchamiany i piosenka nie odtwarza).
Zgodnie z moją wiedzą, 'Process.Start' zwróci' null', jeśli żaden proces nie został faktycznie uruchomiony, np. istniejący proces został ponownie wykorzystany w celu załadowania dokumentu (w twoim przypadku pliku mp3). Czy naprawdę chcesz zabijać proces, którego twój kod właściwie się nie rozpoczął? – Ani
@Ani - statyczny Start wywołuje wszystkie procesy powrotne, ale funkcja zwracania zwraca wartość bool –
@Steve Townsend: Prawo, ale uważam, że OP mówi o statycznej metodzie. Jeśli odwołanie do niezerowego obiektu 'Process' było już dostępne, problem nie istniałby. – Ani