Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
C# ile Başlayan ve Sonlandırılan İşlemleri Alma [ Process hook ]
#1
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.

[Resim: 46rzsscn.png]


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 senderEventArgs e)
 
       {
 
         
        
}

 
       void processStartEvent_EventArrived(object senderEventArrivedEventArgs 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 senderEventArrivedEventArgs 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 senderEventArgs 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...


Ek Dosyalar
.zip   IslemYakalaX64.zip (Dosya Boyutu: 380.07 KB / İndirme Sayısı: 746)
Cevapla
#2
Çalışan Programın Aldığı Parametreyide Görmek Mümkün müdür Acaba ?
Örneğin;
Kod:
uygulama.exe -hidden

şeklinde çalışan bir uygulamanın parametlerini "-hidden" bölümünü görebilirmiyiz
Bul
Cevapla
#3
(20-11-2015, 20:59)BrainHell Adlı Kullanıcıdan Alıntı: Çalışan Programın Aldığı Parametreyide Görmek Mümkün müdür Acaba ?
Örneğin;
Kod:
uygulama.exe -hidden

şeklinde çalışan bir uygulamanın parametlerini "-hidden" bölümünü görebilirmiyiz


Sanırım bu örnekte kullanmış olduğumuz kod ve metodlarla istediğiniz şey mümkün değil. Bunun için Windows API'lerini detaylı şekilde incelemek lazım.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  c# nesnenin görüntüsünü alma Administrator 0 3,392 29-06-2017, 14:39
Son Yorum: Administrator
  C# önemli dizin yollarını alma Administrator 0 3,310 21-11-2015, 14:26
Son Yorum: Administrator
  C# da SQL işlemleri birdbrain 1 11,156 17-11-2015, 00:33
Son Yorum: Administrator
  C# İle İnternet IP Adresi Alma Administrator 0 4,414 13-10-2015, 19:27
Son Yorum: Administrator

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi