Download - PEMROGRAMAN API
![Page 1: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/1.jpg)
PEMROGRAMAN API
- PERTEMUAN 3 -
![Page 2: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/2.jpg)
API parameter types Terdapat parameter yang asing
seperti VOID, LPCSTR or DWORD.
Bila anda familiar dengan C, maka anda mustinya sudah mengetahui tipe tersebut
![Page 3: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/3.jpg)
API parameter types Contoh lain adalah HWND, HDC, HMENU
Kesemuanya diawali dengan huruf “H”, yang artinya adalah handle untuk tipe object yang berbeda
![Page 4: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/4.jpg)
API parameter types Misalnya HBITMAP adalah handle
untuk BITMAP, HBRUSH adalah handle untuk BRUSH, dan lain-lain
Semuanya dikonversikan ke Long dan harus dipassingkan secara ByVal
![Page 5: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/5.jpg)
API parameter types Beberapa Type diawali dengan LP.
Merupakan singkatan dari Long Pointer. Jadi LPWORD sebenarnya adalah alokasi
memori dimana data disimpan Ketika anda memassing argumen
dengan menggunakan ByRef (default), maka anda sebenarnya memassing alamat
![Page 6: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/6.jpg)
API parameter types Ingat, bila parameter type anda
diawali dengan LP, maka anda harus memassingnya secara ByRef.
Tapi LPARAM adalah sama seperti Lparam, bukan LParam. Artinya dia bukan pointer. Anda harus memassingnya secara ByVal
![Page 7: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/7.jpg)
API parameter types Untuk type NULL. Biasanya dipassing
sebagai ByVal 0& atau sebagai vbNullString.
Untuk type VOID. Ingatlah deklarasi haruslah berbentuk Sub.
![Page 8: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/8.jpg)
Any Beberapa messages mengandung
parameter yang dideklarasikan sebagai Any.
Artinya parameter bisa bervariasi Anda bisa memassing integer, string,
user defined types, ataupun yang lainnya
Berikut ini adalah contoh function (SendMessage) yang mengandung parameter bertype Any
![Page 9: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/9.jpg)
Any Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal Hwnd as Long, ByVal wMsg as Long, ByVal wParam as Long, lParam as Any
) as Long
![Page 10: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/10.jpg)
Any lParam dideklarasikan ByRef (default)
sebagai Any. Aturan yang harus diikuti bila memassing
type berbeda kepada lParam. Numeric ByVal (As Long, or As Any) Null ByVal (As Long, or As Any) String ByRef (As String, or As Any)
Type ByRef (As Any) array of Type ByRef (As Any)
![Page 11: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/11.jpg)
AnyCONTOH:
Call SendMessage( Me.Hwnd,
WM_XXXX, 0&, ByVal LongValue
)
![Page 12: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/12.jpg)
Any Tiga parameter pertama adalah standar.
Karena dideklarasikan secara ByVal. Parameter keempat (LongValue) jika
dibiarkan, maka akan dilakukan secara ByRef. Sebab VB tidak mengenali parameter apa yang akan dipassing
Oleh karena itu, harus ditulis secara eksplisit ByVal di depannya
![Page 13: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/13.jpg)
Any Lebih mudah bila kita membuat beberapa
versi dari satu fungsi yang sama. Penting untuk pemanggilan yang berbeda
![Page 14: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/14.jpg)
Any Public Declare Function SendMessageLng Lib "User32" Alias "SendMessageA" ( ByVal Hwnd as Long,
ByVal wMsg as Long, ByVal wParam as Long, ByVal lParam as Long
) as Long
![Page 15: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/15.jpg)
Any Public Declare Function SendMessageStr Lib "User32" Alias "SendMessageA" ( ByVal Hwnd as Long,
ByVal wMsg as Long, ByVal wParam as Long, lParam as String
) as Long
![Page 16: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/16.jpg)
Any Perhatikan bahwa tipe parameter tidak
mengubah API. Parameter keempat adalah selalu 4-byte. Ketika kita memassing nilai Long atau Null ByVal, 4-byte value akan dipassing secara langsung ke function.
![Page 17: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/17.jpg)
Any Namun apabila yang dipassing adalah
String atau yang lainnya, maka yang terjadi adalah ByRef
sehingga VB sebenarnya memassing alamat dari variabel tersebut, yaitu nilai 4-byte value.
![Page 18: PEMROGRAMAN API](https://reader036.vdokumen.com/reader036/viewer/2022082717/568155a1550346895dc37db2/html5/thumbnails/18.jpg)
- QUESTION ? -