C# Proccess ID ile Uygulama Sonlandırma

Katılım
27 Ocak 2012
Mesajlar
14.310
Makaleler
34
Çözümler
41
Yer
İstanbul/Üsküdar
Daha fazla  
Cinsiyet
Erkek
Meslek
Active Directory - Security Uzmanı
Profil Kapağı
1522600635
Arkadaşlar HTC VIVE için bir yazılım geliştiriyorum ve sürem kısıtlı. Çalıştırdığım uygulamaları belirli bir sürenin ardından sonlandırabilmem gerekiyor.

Dosyayı seçtirip, konum bilgisine erişip o bilgi ile çalıştırma kısmında problem yok. Ancak çalıştırdığım uygulamayı ne şekilde kapatabilceğimi bilmiyorum, mantığım tıkandı :) Yine dosya konumunu kullanarak kapatabilmen ne ala ancak sanıyorum ki görev yöneticinde dikkatimi çeken PID değerini kullanarak bir şeyler yapmamız gerekecek.

Bilgi sahibi olan, yardımcı olabilecek seviyede olanlar lütfen ulaşsın. @byanigli
 
C# bilgim yok hacı. Fakat her sorun için bir çözüm kaynağı vardır. Ufak bir Google araması ile şöyle bir sonuca ulaştım. Proccess ID üzerinden şu şekilde programı kapatabiliyor fakat belirlenmiş bir süre içerisinde değil. Eğer belli bir geri sayım ya da süre sınırlandırması için fonksiyon yazabilirsen, bana kalırsa sunuca ulaşabilirsin.

Kill process by process id
 
Hacım harbiden işe yarıyor :) Az önce 1172 PID'li Chrome uygulamasını kökten kapattım :)
Dün geceye kadar bu işle uğraşınca beynim yandı sanırsam, milyon dolarlık proje senin sayende ayakta yine :D

Unutmadan sistem kütüphanesine "using System.Diagnostics" eklemek gerekiyor Proccess komutlarını tanıması için.
Ben biraz kafa yorayım devamını da getiririm.

Yalnız çalıştırılan programa ait PID de bulunmak zorunda :)
 
Son düzenleme:
Bir ekleme de ben yapayım, proccess ID kullanarak çalışmıyor fakat işini her türlü görür gibi.
Kod:
Process[] islemler = Process.GetProcessesByName("chrome"); // islemin adi mesela chrome
foreach (Process p in islemler)
 p.Kill();
 
İlginiz için cidden teşekkür ederim. Üzerinde çalıştığım yazılımda "çalıştırılan programı tekrardan kapatabilmem için programa ait bir bilgi - kimlik yakalamam ve onu kullanabilmem" gerekiyordu.
Ne yalan söyleyeyim 10 saattir sizlerin de paylaştığı komutları deniyorum, test ediyorum.

Process.GetProcessesByName komutu kapatmaya yarıyor ancak çalıştırılan programın kimliğini de bir şekilde bulup o ("") 2 parantez arasına sokabilmek gerekiyor anladığım kadarıyla.

Öncelikle OpenFileDialog ile bir pencere açtırıp müşteriye istenilen kriterlere uygun dosya seçtiriliyor. FileName komutu ile dosyanın konum bilgisi alınıp aşağıdaki kod ile uygulama çalıştırılıyor başarılı bir biçimde.

Kod:
System.Diagnostics.Process.Start(@listBox2.Items[listBox1.SelectedIndex].ToString());

Seçilen dosyanın exe uzantılı halde bilgisini de dosya.SafeFileName komutu ile elde ediyoruz.

Kod:
OpenFileDialog dosya = new OpenFileDialog();
            dosya.Filter =" Uygulama Dosyaları (*.exe) |*.exe*";
            dosya.Title = "Oyun Seçme Ekranı";
            dosya.ShowDialog();
            string DosyaYolu = dosya.FileName;
            textBox2.Text = DosyaYolu;
            textBox4.Text = dosya.SafeFileName;

Resimdeki AD kısmı bilgisindeki değeri elimize çıkartıyor kısacası. PID yerine AD ile yürümüş olduk kısacası :)
Adsız.jpg

Son kısımda ise .exe ekini atıyoruz. Geriye temiz, EXE uzantısı olmayan bir AD kalıyor.
Kod:
textBox5.Text = textBox4.Text.Substring(0,textBox4.Text.Length - 4);
Onu da @Erkan Çevik 'in verdiği kod ile sonlandırıyoruz kolayca :)
Foreach döngüsü kuruyoruz ki Chrome gibi aynı isim ile birden çok uygulama başlatan programlar tamamen kapatılabilsin.

Kod:
Process[] programkapat = Process.GetProcessesByName(textBox5.Text);

            if (programkapat.Length > 0)
            {
                foreach (Process p in programkapat)
                {
                    p.Kill();
                }
            }

Aynı sorundan müzdarip olabilecek insanlar için detaylı yazdım, teşekkür ederim yardımlarınız için.
 
Uyarı! Bu konu 8 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı