Hızlı Konu Açma

Hızlı Konu Açmak için tıklayınız.

Son Mesajlar

Konulardaki Son Mesajlar

Reklam

Forumda Reklam Vermek İçin Bize Ulaşın

VB6 Windows Api ile parola alanı okumak (Ayrıntılı Anlatım)

Mr.Onur

Fahri Üye
Fahri Üye
Fenerbahçe
Katılım
3 Şubat 2014
Mesajlar
1,744
Tepkime puanı
0
Puanları
0
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ı:
Kod:
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.
Kod:
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)
Kod:
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.
 

Users Who Are Viewing This Konu (Users: 0, Guests: 1)

Üst