Teşekkürler buna benzerini 360 arkadaşımızda cevaplamıştı ikinizde saolun.
fakat şöyle bir durum olmazmı ?
diyelimki görev yöneticisi işlemlerde notepad.exe diye bir işlem var
bu işlem sonlandırılınca bizim programınızında sonlanması mümkünmü ??
açıkçası ben online bir oyunda hile kodluyorum ve çalışmalarım gayet başarılı bir şekilde sürüyor.
tek sorun oyunun kapanınca hileminde kapanmasını istiyorum.(birde hilemin kapanınca oyunun kapanması var siz onu cevapladınız.)
Eğer Müsaitseniz Bir Soru Daha Sormak isterim başka bir konu açmadan
Acaba bu hileme hwid sistemi kurabilirmiyiz ? (weble aram iyidir ve durumun web ile ilgili olduğunu biraz biliyorum)
İnternette kodları mevcut fakat hepsi vb.net olarak.
Black-King Yardımlarınızı Bekliyorum
şimdiden teşekkürler
kusura bakmayın konuşmaları yeni okuyorum tabi notepad.exe kapanınca programı sonlandırmakta mümkündür bunu nasıl yapabilirz diye sorcak olursanız Asenkron method kullanarak yapabilirsiniz.
Mantık şöyle işleye bilir...
Asenkron metod tanımlarız methoda sonsuz bir döngü açarız ve içerisinde sürekli görev yöneticisinde çalışmakta olan programları kontrol ettiririz eğer notepad.exe adında bir program bulunamaz ise programı kapatırız Asenkron metod hakkında bir bilginiz yok ise aklınıza direk şu soru gelcektir peki iyi güzel yazmışsınız ama sonsuz döngü açınca program orda kitlenip durmazmı diğer kodlar işletilmezse benim ne işime yarar diyeceğinizden eminim ve direk cevabını yazıyım Asenkron metodlar programınızdaki diğer kodların çalışmasını engellemez örnek vercek olursak
Asenkron metod tanımladık ve örneğin Button1 in click olayına yazdık
private **** button1_Click(object sender, EventArgs e)
{
IslemHandler h = new IslemHandler(IslemYap); //
Asenkron Burada IslemYap işlem yap adlı bir metod var metod örneğin **** geriye birşey döndürmüyo sonsuz bir döngü içerisinde sürekli görev yöneticisindeki programları kontrol ediyo eğer görev yöneticisinde notepad.exe adında bir program bulunmaz ise metod sonlanıyor ve sonlandığı zaman IslemSonlandir metodu devreye giriyo bu metod içerisindede program kapatılıyor fakat bu işlemler olurken diğer yazdığımız kodların yani aşağıda bulunan timer1.start() kodu ve string s adlı değişkenin işleyişine engel olmuyor yani üstten kodlarımız başlıyo aşağıya kadar işleniyo
IslemHandler h = new IslemHandler(IslemYap); arka planda sürekli çalışmaya devam ediyo diğer kodların işlenmesi için metodun sonlandırmasını beklemiyor.
h.BeginInvoke(new AsyncCallback(IslemSonlandir), this); // Asenkron
time1.start();
string s = "Örnek olarak yazıyorum";
}
bu bilgilerden sonra sorununuzu bitirmek için aşağıda kodları paylaştım ve gerekli açıklamalarda bulundum.
Öncelikle using System.Diagnostics; ekliyoruz daha sonra Asenkron metod tanımlayıp gerekli açıklamalarda bulcam.
delegate **** IslemHandler(); /
/ öncelelikle delegate tanımlıyoruz IslemYap() metodumuz **** olduğundan delegate'inde **** olması şarttır eğer string int gibi yaparsak hata alırız metodumuz ile aynı türde olması şart
string calismaktaOlanProgramlar;
// çalışmakta olan programları calismaktaOlanProgramlar adlı bir string değişkenin içerisinde saklıyacaz
string programAdi = "notepad";
// buraya yazdığımız program adı eğer görev yöneticisinde bulunmaz ise programımız kapatılcak
string durum = "islemYap";
// burda ise Asenkron metodumuzun durumunu belirten değişken olcak detayı aşağıda anlatcam
**** IslemYap()
// **** metod tanımluyoruz **** olmasının nedeni işlemimiz için bize geriye hiç bir değer döndürmesinin gerekmediğinden şuna tekrar değinmek istiyorum delegate'imizin türünüde **** yapmıştık bu her 2sinin türüde aynı olmaz zorunda string ise delegate'de string olmak zorunda kodlarda bir değişiklik yaparken bunlara dikkat edin.
{
while (durum != "ProgramKapat")
// olayın asıl en önemli noktası burası burda while ile durum adlı yukarıda belirlediğim string değişken kontrol edliyor Eğer durum değişkeni ProgramKapat dan farklı ise metod sürekli çalışacak yanlız durum değişkeni ProgramKapat ile eşitse o zmn artık IslemYap Metodumuz sonlancak ve aşağıdaki IslemSonlandir metodu devreye gircek.
{
Process[] Islemler = Process.GetProcesses();
// Görev yöneticisindeki çalışmakta olan programları öğrenmemiz için Process sınıfından faydalancaz.
foreach (Process item in Islemler)
{
try
{
calismaktaOlanProgramlar += (item.ProcessName);
// calismaktaOlanProgramlar adlı değişkenimize görev yöneticisinde görünen programların adları ekleniyor
}
catch
{
;
}
}
if (calismaktaOlanProgramlar.IndexOf(programAdi) != -1)
// calismaktaOlanProgramlar adlı değişkenin içerisinde programAdi ile belirttiğimiz notepad adlı bir bilgi varmı diye kontrol ediliyor var ise if koşulu sağlancak yok ise else koşulu sağlancak
{
calismaktaOlanProgramlar = "";
// değişken içeriği siliniyo
for (int i = 0; i < Islemler.Length; i++)
// Islemler adlı sınıfımızın elemanları kadar for döngümüz dönmeye devam etcek ve her dönüşte...
{
Islemler
.Dispose(); // Islemler adılı nesne silincek sebebi ise bu metod sürekli devam etcek ve sürekli Islemler sınıfı oluşturulcak ve buda ramda gereksiz yer işgaline sebep olcak eğer Dispose ile Eski nesneleri silmezsek program şişer.
}
}
else
{
durum = "ProgramKapat"; // eğer calismaktaOlanProgramlar değişkenin içerisinde notepad bulunmaz ise durum değişkenin adı ProgramKapat olcak ve yukarıdaki while koşuluna bakıldığında koşul sağlanmıyacak ve IslemYap Metodumuz sonlancak daha Sonra IslemSonlandir metodu devreye gircek ve program kapancak.
}
}
}
**** IslemSonlandir(IAsyncResult iar)
{
Form1 frm = (Form1)iar.AsyncState;
MessageBox.Show("İşlem Sonlanıyor...");
frm.Close();
}
private **** button1_Click(object sender, EventArgs e)
{
IslemHandler h = new IslemHandler(IslemYap); // burada buton1'in tıklanma olayında Asenkron metodumuz devreye giriyor yanlız siz burdaki kodları formun load olayına yerleştirirseniz form yüklenir yüklenmez Asenkron metod devreye girer
h.BeginInvoke(new AsyncCallback(IslemSonlandir), this); // IslemSonlandir metodu çalıştırılıyor tabi yukarıdaki IslemYap metodu sonlanınca burası işlencek tekrar belirtiyim bu 2 kod sizin diğer kodlarınızın işleyişine engel olmaz buradaki kodları aynı bir programmış gibi düşünün
}
private **** Form1_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;// eğer bu kodu yazmazsak yukarıda hiç bir işlem gerçekleşmez Asenkron metod çalıştırmak için bu komutu eklememiz lazım olay bundan ibaret.
}
Sitede bazı yazılar *** olarak çıkıyo sorun yaşamamanız için programın sourcesini hotfile upload ettim aşağıdan indire bilirsiniz sorun yaşarsanız başka bir servera upload edebilirim.
https://hotfile.com/dl/223015316/5a35164/WindowsFormsApplication1.rar.html