PEMROGRAMAN API [Callbacks]
n Adalah
function buatan user untuk kemudian memberitahu Windows untuk memanggilnya
karena beberapa alasan tertentu
n Berisi
parameter-parameter sesuai keinginan
n Contoh
kegunaannya adalah untuk menerima stream data secara kesinambungan dari
Windows.
Declare Function EnumWindows Lib
"User32"
( ByVal lpEnumFunc As Long,
ByVal
lParam As Long
)
As Long
n Parameter
pertama adalah address dari callback function
n Parameter
kedua adalah terserah
n Nilai
ini akan dipassingkan ke function sehingga anda mengetahui untuk apa callback
tersebut dipanggil
n VB
5.0 mempunyai operator untuk mengetahui alamat dari function
n Operator
tersebut adalah AddressOf
n Digunakan
hanya di depan parameter ketika anda memanggil function
n Penggunaan
seperti
FuncP
= AddressOf MyFunction
n Menyebabkan
terjadi error. Caranya yang benar adalah dengan jalan memanggil EnumWindows
Success&
= EnumWindows(AddressOf cbFunc, 58&)
n Anda
juga harus menuliskan function callback
n Ada
beberapa tipe callback yang mempunyai beberapa parameter yang berbeda
n Deskripsi
dari parameter ini bisa dijumpai di SDK Help file ataupun MS SDK documentation.
n Berikut
ini adalah contoh deklarasi callback
Public
Function cbFunc
( ByVal Hwnd As Long,
ByVal
lParam As Long
)
as Long
n deklarasi
function
Declare Function GetWindowText Lib
"User32" Alias "GetWindowTextA"
( ByVal hwnd As Long,
ByVal
lpString As String, ByVal
cch As Long
)
As Long
n deklarasi
function
Declare Function EnumWindows Lib
"User32"
( ByVal lpEnumFunc As Long, ByVal lParam As Long
)
As Long
n Implementasi
function
Public Function cbFunc(ByVal Hd As
Long, ByVal lParam As Long) As Long
If lParam = 58 Then 'enum windows
Dim St As String
St = Space(255)
Ret& = GetWindowText(Hd, St,
Len(St))
Debug.Print Left(St, Ret&)
cbFunc = 1
End If
End Function
n Pemanggilan:
Private Sub Command1_Click()
Success& = EnumWindows(AddressOf cbFunc, 58&)
End Sub
Declare Function GetWindowText Lib
"User32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal
lpString As String, ByVal cch As Long) As Long
Declare Function EnumWindows Lib
"User32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Function cbFunc(ByVal Hd As
Long, ByVal lParam As Long) As Long
If lParam = 58 Then 'enum windows
Dim St As String
St = Space(255)
Ret& = GetWindowText(Hd, St,
Len(St))
Debug.Print Left(St, Ret&)
cbFunc = 1
End If
End Function
Private Sub Command1_Click()
Success& = EnumWindows(AddressOf cbFunc, 58&)
End Sub
n Perhatikan
bahwa function akan mengembalikan nilai 1
n Bila
mereturn nilai 0, enumerasi akan berhenti
n Lihat
“Immediate Window”
n Sample
ini mengenumerasikan caption semua window
No comments:
Post a Comment
silahkan membaca dan berkomentar