08-11-2015, 00:03
(Son Düzenleme: 08-11-2015, 01:05, Düzenleyen: Administrator.)
Merhaba arkadaşlar,
C# ile çalıştırılan ve sonlandırılan uygulamaları yakalamayı göstermek için ufak bir örnek uygulama hazırladım.
Ayrıca örneğimizde, hedef bir program belirleyip çalıştırıldığında yakalama ve toplamda kaç kez çalıştırıldığı bilgisini almak gibi özellikler mevcut.
* Dikkat : Örnek Windows x64 için derlenmiştir. 64 bit bir bilgisayarda uygulamanıınızı 32 bit olarak derler ve 64 bit için olan uygulamalarla ilgili işlemler yapmaya çalışırsanız beklenmedik hatalarla karşılaşabilirsiniz.
Yani eğer process ile ilgili işlemler yapacaksanız sistem türünü gözönünde bulundurmanızda fayda var...
* Uygulamada hedef uygulama yoluna "%" değer girerseniz o adda bir uygulama hangi dizinde çalışırsa çalışsın toplam çalıştırma sayısı artırılır. Eğer belirli bir hedef yolu girerseniz sadece o dizinde o adla çalıştırılan uygulamalı yakalar.
* Örnek uygulama ve kaynak kodları ektedir...
C# ile çalıştırılan ve sonlandırılan uygulamaları yakalamayı göstermek için ufak bir örnek uygulama hazırladım.
Ayrıca örneğimizde, hedef bir program belirleyip çalıştırıldığında yakalama ve toplamda kaç kez çalıştırıldığı bilgisini almak gibi özellikler mevcut.
PHP Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Management;
using System.Diagnostics;
namespace IslemYakala
{
public partial class IslemYakala : Form
{
ManagementEventWatcher processStartEvent = new ManagementEventWatcher("SELECT * FROM Win32_ProcessStartTrace");
ManagementEventWatcher processStopEvent = new ManagementEventWatcher("SELECT * FROM Win32_ProcessStopTrace");
int ToplamCalistirma = 0;
public IslemYakala()
{
CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
processStartEvent.EventArrived += new EventArrivedEventHandler(processStartEvent_EventArrived);
processStartEvent.Start();
processStopEvent.EventArrived += new EventArrivedEventHandler(processStopEvent_EventArrived);
processStopEvent.Start();
}
private void IslemYakala_Load(object sender, EventArgs e)
{
}
void processStartEvent_EventArrived(object sender, EventArrivedEventArgs e)
{
string processName = e.NewEvent.Properties["ProcessName"].Value.ToString();
int processID = Convert.ToInt32(e.NewEvent.Properties["ProcessID"].Value);
string ProcessPath = "Alınamadı!";
try
{
ProcessPath = Process.GetProcessById(processID).MainModule.FileName;
}
catch (Exception _e)
{
//MessageBox.Show("İşlem Yolu Alınırken Hata oluştu... " + (char)13+ _e.Message);
}
if ( (hedefUygAdi.Text !="" & HedefUygYolu.Text !="" & hedefUygAdi.Text == processName) & (HedefUygYolu.Text == "%" | HedefUygYolu.Text == ProcessPath))
{
ToplamCalistirma++;
lblToplam.Text = "Toplam Çalıştırılma : " + ToplamCalistirma;
lblSonCalistirma.Text = "Son Çalıştırılma : " + DateTime.Now.ToString();
}
txtAksiyonTuru.Text = "Uygulama Çalıştırıldı... [ " + DateTime.Now.ToLongTimeString() + " ]";
txtAksiyonUygAdi.Text = processName;
txtAksiyonUygYolu.Text = ProcessPath;
txtAksiyonUygPID.Text = processID.ToString();
}
void processStopEvent_EventArrived(object sender, EventArrivedEventArgs e)
{
string processName = e.NewEvent.Properties["ProcessName"].Value.ToString();
int processID = Convert.ToInt32(e.NewEvent.Properties["ProcessID"].Value);
txtAksiyonTuru.Text = "Uygulama Sonlandırıldı... [ " + DateTime.Now.ToLongTimeString() + " ]";
txtAksiyonUygAdi.Text = processName;
txtAksiyonUygYolu.Text = "-";
txtAksiyonUygPID.Text = "-";
}
private void groupBox2_Enter(object sender, EventArgs e)
{
}
}
}
* Dikkat : Örnek Windows x64 için derlenmiştir. 64 bit bir bilgisayarda uygulamanıınızı 32 bit olarak derler ve 64 bit için olan uygulamalarla ilgili işlemler yapmaya çalışırsanız beklenmedik hatalarla karşılaşabilirsiniz.
Yani eğer process ile ilgili işlemler yapacaksanız sistem türünü gözönünde bulundurmanızda fayda var...
* Uygulamada hedef uygulama yoluna "%" değer girerseniz o adda bir uygulama hangi dizinde çalışırsa çalışsın toplam çalıştırma sayısı artırılır. Eğer belirli bir hedef yolu girerseniz sadece o dizinde o adla çalıştırılan uygulamalı yakalar.
* Örnek uygulama ve kaynak kodları ektedir...