Bu makalemizde Windows Api lerinden FindWindow ve SetParent ile ilgili bir uygulama yapacağız.

Uygulamayı Kendi Formunuzda Çalıştırmak

Bu makalemizde Windows Api lerinden FindWindow ve SetParent ile ilgili bir uygulama yapacağız. Makalemizde çalışan bir windows programını kendi formumuzun içine bu apileri kullanarak nasıl alacağımızı göreceğiz.

Öncelikle Visual studio ile gelen Microsoft Spy++ dan biraz bahsedelim. Visual Studio Tools un içerisinde bulunan bu program bilgisayarınızda çalışan tüm uygulamalarla ilgili ayrıntılı bilgiler verir. Programı çalıştırdığınızda resimdeki gibi çalışan uygulamalarınız ve ona bağlı alt kırılımlar bulunmaktadır. Bunların içerisinde toolbarları Menüleri textbox, label ları bir çok detayı bulabilirsiniz. Bir kaç yıl öncesine kadar textbox lara yazılan password ları buradan bulmak mümkündü. Yazılan programlarda kolaylık olsun diye her defasında girilmesi yerine otomatik olarak önceki oturumun şifresini textbox a yazan programlar bulunmaktaydı. Bu araçları kullanarak textbox ın içeriği kolayca görülebiliyordu. Ancak daha sonraki update lerde bu açık kapatıldı. Aynı şekilde bir dönem geliştirilen uygulamaların demo kullanımı için bazı menüleri disable edilirdi. Burada o uygulamanın menülerinin handle ları ele geçirilerek menüler enable yapılabiliyordu.

Spy++ ile ilgili bu ayrıntıları verdikten sonra nasıl kullanabileceğimize bakalım. Search altındaki FindWindow a tıkladığınızda gelen pencerede Finder Tool un bulunduğu yerde yuvarlak icon u bilgilerini görmek istediğiniz pencerenin üstüne getirdiğinizde o uygulamayla ilgili bilgilere ulaşabilirsiniz.

Biz programımızda buradaki class (OpusApp) ı kullanarak bir uygulamayı kendi formumuzun içerisine yerleştirmeye çalışacağız. Öncelikle formumuzu oluşturalım. Formumuzda label, textbox, button ve panel kullanacağız. Textbox a çalışan programa ait girilen Class bilgisiyle FindWindow da o uygulamanın Handle ını yakalayıp SetWindow ile panelimizin içerisine alacağız.

DLLImport ile Windows Apilerinden FindWindow ve SetParent Fonksiyonlarını ekleyelim.

[DllImport("user32.dll")]
public static extern int FindWindow(string strclassName, string strWindowName);

[DllImport("user32.dll")]
static extern int SetParent(int hWndChild, int hWndNewParent);

public static int intHandle = 0;

 

Butonumuza tıklandığında textbox ın içeriğini kontrol ettikten sonra işlemlerimizi gerçekleştirelim.

private void btnEkle_Click(object sender, EventArgs e)
{
    if (txtApplicationClass.Text.Trim() != "")
    {
        if (intHandle == 0)
            intHandle = FindWindow(txtApplicationClass.Text, null);
        if (intHandle != 0)
        {
            SetParent(intHandle, this.panel1.Handle.ToInt32());
        }
    }
}

 

DllImport için uygulamanıza using System.Runtime.InteropServices; eklemeniz gerekmektedir. Programınızı çalıştırdığınızda istediğiniz uygulamanın classını textbox a yazarak programınızın içine alabilirsiniz.

İyi çalışmalar dilerim.

İlgili Makaleler

Bu yazıya 0 yorum yapılmış.

Yorum Gönder