C# Program Kapatma Acil Yardım...

Masqot77

Üye
11 Kas 2011
239
0
Merhaba Arkadaşlar ;

C# da şöyle bir sorunum var.

şimdi bi program yaptım bu program not defteri ile birlikte çalışmakta.

yani programı açıyoruz "not defteri bekleniyor" diyor

not defterine girince programın asıl menüsü açılıyor.

buraya kadar herşey tamam fakat şöyle bir sorunum var

not defterini kapatınca program açık kalıyor.

1. amacım not defterini kapatınca programında otomatik olarak kapanması.

2. si ise program kapatılınca not defterinin kapatılması[Mbox(Programın kapatılması için not defterinin kapatılması gerekiyor onaylıyormusunuz ? /Yes,No) gibisinden]

evet 2 side aynı gibi duruyor.

bu bana acil lazım arkadaşlar eğer biraz anlatırsanız yapabilirim.
yada isterseniz kodları direk verebilirisiniz.

şimdiden teşekkürler
 

360

Üye
15 Ocak 2011
122
0
Merhaba Arkadaşlar ;

C# da şöyle bir sorunum var.

şimdi bi program yaptım bu program not defteri ile birlikte çalışmakta.

yani programı açıyoruz "not defteri bekleniyor" diyor

not defterine girince programın asıl menüsü açılıyor.

buraya kadar herşey tamam fakat şöyle bir sorunum var

not defterini kapatınca program açık kalıyor.

1. amacım not defterini kapatınca programında otomatik olarak kapanması.

2. si ise program kapatılınca not defterinin kapatılması[Mbox(Programın kapatılması için not defterinin kapatılması gerekiyor onaylıyormusunuz ? /Yes,No) gibisinden]

evet 2 side aynı gibi duruyor.

bu bana acil lazım arkadaşlar eğer biraz anlatırsanız yapabilirim.
yada isterseniz kodları direk verebilirisiniz.

şimdiden teşekkürler



öncelikle

using System.Diagnostics;
ekle

daha sonra formun FormClosed olayına aşağıdaki kodları yaz program kapandığı zaman not defteride otomatik kapanır.


Process[] localByName = Process.GetProcessesByName("notepad");
foreach (Process p in localByName)
{
p.Kill();
}
 

'Black-King

Yaşayan Forum Efsanesi
30 Tem 2012
10,353
3
340
İstanbul
Not defterine verdiremezsin ama program kapanınca kapattırmayı deniye biliriz.
Öncelikle sunu yaz boş bir alana ;
Kod:
private **** Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBox.Show("Kapatmak istiyor musunuz?", "Çıkış", MessageBoxButtons.YesNo);
if (dr == DialogResult.No)
{
e.Cancel = true;
}
}
Bu kapanınca not defterinide

Kod:
Process[] p;
p = Process.GetProcessesByName("notepad");
/*Kapatmak istenilen programın adı ".exe" uzantısı eklenmeden*/


/*Process.GetProcessesByName bir array dönderir. Sebebi aynı programın birden fazla örneğinin çalışıyor olabilmesidir.*/
if (p.Length > 0)
{
foreach (Process process in p)
{
process.Kill();
}
}

/*Eğer sadece ilk açılan işlem sonlandırılmak isteniyorsa foreach döngüsü yerine p[0].Kill(); yapılır.*/

Yapabilirsin ;)
 

Masqot77

Üye
11 Kas 2011
239
0
Not defterine verdiremezsin ama program kapanınca kapattırmayı deniye biliriz.
Öncelikle sunu yaz boş bir alana ;
Kod:
private **** Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBox.Show("Kapatmak istiyor musunuz?", "Çıkış", MessageBoxButtons.YesNo);
if (dr == DialogResult.No)
{
e.Cancel = true;
}
}
Bu kapanınca not defterinide

Kod:
Process[] p;
p = Process.GetProcessesByName("notepad");
/*Kapatmak istenilen programın adı ".exe" uzantısı eklenmeden*/


/*Process.GetProcessesByName bir array dönderir. Sebebi aynı programın birden fazla örneğinin çalışıyor olabilmesidir.*/
if (p.Length > 0)
{
foreach (Process process in p)
{
process.Kill();
}
}

/*Eğer sadece ilk açılan işlem sonlandırılmak isteniyorsa foreach döngüsü yerine p[0].Kill(); yapılır.*/

Yapabilirsin ;)

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
 

Masqot77

Üye
11 Kas 2011
239
0
k.bakmayın flood olacak ama yeni bir sorum var bunun için yeni konu yerine bunu güncellemeye çalışıyorum.

7. sayfadaydı fakat hala güncel ++
 

360

Üye
15 Ocak 2011
122
0
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
 
Son düzenleme:

Masqot77

Üye
11 Kas 2011
239
0
Çok teşekkür ederim.
üzgünüm ama elimden gelen bu teşekkür etmek :)

keşke bunun bir karşılığını verebilseydim.bir kuru teşekkür yetmez bence :)

tekrardan çok teşekkürler.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.