Merhabalar,

Bu dersimizde ekrandaki herhangi bir pencere icindeki parola (textbox) alanındaki "*******" şeklinde gorunen alanı okumayı oğreneceğiz.

NOT: Bu işlemi Microsoft Visual Studio icindeki Spy (veya Spy++) programı ile program yazmadan da yapabilirsiniz. Bildiğiniz gibi windows uzerinde gorduğumuz her bir pencere, pencere icerisindeki buton, texbox, label vb herşey bir pencere (window) dir. Buna gorev cubuğu, başlat duğmesi ve hatta masaustu ekranı da dahildir. Windows ismi zaten buradan gelmektedir

Visual Studio bilgisayarınızda kuruluysa başlat menusunden Microsoft Visual Studio -> Visual Studio Tools -> Spy şeklinde Spy programını calıştırıp bilgisayarınızda o an acık olan tum pencereleri gorebilirsiniz.

Gelelim programlama aşamasına;
Bu işlem icin 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 turunde dondurur.

Point API turu 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 dondurur. Bu textbox iceriği olabilir.

Projemizi Hazırlayalım

VB6 ile bir proje acı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 icine yazdırır.
__________________