Rehber C# Bir uygulama açılınca, kapanınca tetiklenen event yapmak

Bir sabah kalktım ki dedim oyuna girerken her şeyi tektek açmaya neden uğraşıyorum?
Niye otomatik olmasın ki? Dedim ve yaptım. Aslında tek amaç otomatik yardımcı değil :)
C# projemizi oluşturuyoruz. Ben size göstermek amaçlı .NET 4.8.1 Console App açtım.
System.Management kütüphanesini ekliyoruz.
1755869071156.png

1755869287463.png

C#:
using System.Management;
using System;
namespace BayramReis
{
    internal class Program
    {
        static void Main(string[] _)
        {
            ManagementEventWatcher started = new ManagementEventWatcher(
                new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName='notepad.exe'")
            ),
            stopped = new ManagementEventWatcher(
                new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace WHERE ProcessName='notepad.exe'")
            ),
            every = new ManagementEventWatcher(
                new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")
            );
            started.EventArrived += (s, e) =>
            {
                var name = (string)e.NewEvent.Properties["ProcessName"].Value;
                var pid = (uint)e.NewEvent.Properties["ProcessID"].Value;
                Console.WriteLine($"Notepad started [{name}] - [{pid}]");
            };
            stopped.EventArrived += (s, e) =>
            {
                var name = (string)e.NewEvent.Properties["ProcessName"].Value;
                var pid = (uint)e.NewEvent.Properties["ProcessID"].Value;
                Console.WriteLine($"Notepad stopped [{name}] - [{pid}]");
            };
            every.EventArrived += (s, e) =>
            {
                var name = (string)e.NewEvent.Properties["ProcessName"].Value;
                var pid = (uint)e.NewEvent.Properties["ProcessID"].Value;
                Console.WriteLine($"Some process started [{name}] - [{pid}]");
            };
            started.Start();
            stopped.Start();
            every.Start();
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}
Etik sınırlar içerisinde üşengeçliğinizi karşılayan şeyler yapabilirsiniz. Mesela ben oyuna girerken müziği açıyorum, makrolarımı açıyorum vs. artık tek tek uğraşmama gerek yok :D

Önemli not: Burada gösterilen kodları kötü niyetle kullanmayınız. Sorumlulukları red ediyorum.

Yakında çıkacak Windoc uygulamamı takip etmek için: Bilgisayarın sağlığını ve performansını kontrol eden uygulamam Windoc
 
Son düzenleme:
Kötü niyetlere çok açık bir işlem, Technopat Sosyal üyeleri olarak elbette böyle bir şey yapmayız değil mi 😀
Dürüst olmak gerekirse tersine mühendisliği öğreniyorum. Ama bunu göstermemin sebebi client'e vs. bağımsız bağlanmak, loglamak, üşengeçliğin önüne geçmek :D
Bazı arkadaşlarıma süpriz yapmak için de kullanabilirim belki...
Bir sonraki rehberimi bekleyin :)
 
Önemli not: Burada gösterilen kodları kötü niyetle kullanmayınız. Sorumlulukları red ediyorum.

Bu yazı olmasa kötü niyetli kullanırdım. Resmen caydırıcı olmuş.
 
Bu yazı olmasa kötü niyetli kullanırdım. Resmen caydırıcı olmuş.
  • Güvenlik durumu nasıl?
  • Güvenlik durumu... Bayağı bir yoğun :D
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Bununla Windows Media Player çalma listesi de başlatabilir miyiz?

Kodlama konusunda hiç bilgim yok, kendi çapımda otomasyonu halen .bat dosyaları ile sağlıyorum öyle diyeyim.

Elinize sağlık, teşekkürler.
Öncelikle bildirimin gelmediğini belirtmek isterim. Kusura bakmayın.

Evet çok basit bir şekilde yapabilirsiniz. Yazılımda sınır yok. Yapamayacağınız pek bir şey de yok.
Üstte attığım kodun aynısını direkt kullanıp istediğiniz oyun başlayınca tetiklenen evente "Process" sınıfının "Start" methodunu kullanarak Media Player'i başlatabilirsiniz. İstediğiniz oyun kapanınca da yine "Process" sınıfının "CloseMainwindow" methodunu kullanarak kapayabilir veya "Kill" methodunu kullanarak zorla kapatabilirsiniz.
İsterseniz yapıp .exe dosyasını atabilirim. Yapmak istediğiniz oyun/uygulama(lar) adları nedir?

Teşekkür ederim.
 

Technopat Haberler

Yeni konular

Geri
Yukarı