VB6 + Windows Api ile parola alanı okumak

Bu dersimizde windows üzerindeki herhangi bir form (pencere) içerisindeki parola alanı olarak kullanılan textbox'taki değeri görüyoruz.

Merhaba arkadaşlar,

Bu dersimizde ekrandaki herhangi bir pencere içindeki parola (textbox) alanındaki "*******" şeklinde görünen alanı okumayı öğreneceğiz.

NOT: Bu işlemi Microsoft Visual Studio içindeki Spy (veya Spy++) programı ile program yazmadan da yapabilirsiniz. Bildiğiniz gibi windows üzerinde gördüğümüz her bir pencere, pencere içerisindeki buton, texbox, label vb herşey bir pencere (window) dir. Buna görev çubuğu, başlat düğmesi ve hatta masaüstü ekranı da dahildir. Windows ismi zaten buradan gelmektedir :)

Visual Studio bilgisayarınızda kuruluysa başlat menüsünden Microsoft Visual Studio -> Visual Studio Tools -> Spy şeklinde Spy programını çalıştırıp bilgisayarınızda o an açık olan tüm pencereleri görebilirsiniz.

Gelelim programlama aşamasına;
Bu işlem için Windows API kullanmamız gerekir.

Kullanacağımız api fonksiyonları:


Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long

Private Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long



GetCursorPos bize farenin konumunu POINTAPI türünde döndürür.

Point API türü bu şekilde tanımlanır.

Private Type POINTAPI

x As Long

y As Long

End Type



WindowFromPoint belirtilen noktada alanı bulunan pencereyi verir.

GetWindowText pencere metnini döndürür. Bu textbox içeriği olabilir.

Projemizi Hazırlayalım

VB6 ile bir proje açın. Forma 1 adet timer (interval=100, enabled=true) ve bir Textbox ekleyin. (Timer1 ve Text1)


Private Type POINTAPI

x As Long

y As Long

End Type



Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long

Private Declare Function WindowFromPoint Lib "user32.dll" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long



Private Sub Timer1_Timer()

    Dim lp As POINTAPI

    

    GetCursorPos lp

    

    pencereHwnd = WindowFromPoint(lp.x, lp.y)

    

    Dim txt As String * 256

    

    GetWindowText pencereHwnd, txt, 256

    

    Text1 = txt



End Sub



Bu program timer sayesinde 100 milisaniyede bir mouse koordinatlarını kontrol eder ve hangi pencerenin alanına girmişse o pencerenin Text değerini Text1 içine yazdırır.

Tekrar görüşmek dileğiyle.
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git