Translate

Tuesday, August 23, 2016

PEMROGRAMAN API [Callbacks]



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