VB6 + Windows Api ile parola alanı okumak - Sanalkurs.net
Bu dersimizde windows üzerindeki herhangi bir form (pencere) içerisindeki parola alanı olarak kullanılan textbox'taki değeri görüyoruz.
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.
WindowFromPoint belirtilen noktada alanı bulunan pencereyi verir.
GetWindowText pencere metnini döndürür. Bu textbox içeriği olabilir.
VB6 ile bir proje açın. Forma 1 adet timer (interval=100, enabled=true) ve bir Textbox ekleyin. (Timer1 ve Text1)
Dim lp As POINTAPI
pencereHwnd = WindowFromPoint(lp.x, lp.y)
Dim txt As String * 256
GetWindowText pencereHwnd, txt, 256
Text1 = txt
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.