Cara: Memanggil Fungsi Windows yang Mengambil Jenis Tidak Bertanda (Visual Basic)
Jika Anda menggunakan kelas, modul, atau struktur yang memiliki anggota jenis bilangan bulat tidak bertanda, Anda dapat mengakses anggota ini dengan Visual Basic.
Untuk memanggil fungsi Windows yang mengambil jenis tidak bertanda
Gunakan Pernyataan Nyatakan untuk memberi tahu Visual Basic pustaka mana yang memegang fungsi, apa namanya dalam pustaka itu, berapa urutan panggilannya, dan cara mengonversi string saat memanggilnya.
Dalam pernyataan
Declare
, gunakanUInteger
,ULong
,UShort
, atauByte
sebagaimana mestinya untuk setiap parameter dengan jenis tidak bertanda.Lihat dokumentasi untuk fungsi Windows yang Anda panggil untuk menemukan nama dan nilai konstanta yang digunakannya. Banyak dari ini ditentukan dalam file WinUser.h.
Nyatakan konstanta yang diperlukan dalam kode Anda. Banyak konstanta Windows merupakan nilai tidak bertanda 32-bit, dan Anda harus menyatakan
As UInteger
ini.Panggil fungsi dengan cara normal. Contoh berikut memanggil fungsi Windows
MessageBox
, yang mengambil argumen bilangan bulat tidak bertanda.Public Class windowsMessage Private Declare Auto Function mb Lib "user32.dll" Alias "MessageBox" ( ByVal hWnd As Integer, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As UInteger) As Integer Private Const MB_OK As UInteger = 0 Private Const MB_ICONEXCLAMATION As UInteger = &H30 Private Const IDOK As UInteger = 1 Private Const IDCLOSE As UInteger = 8 Private Const c As UInteger = MB_OK Or MB_ICONEXCLAMATION Public Function messageThroughWindows() As String Dim r As Integer = mb(0, "Click OK if you see this!", "Windows API call", c) Dim s As String = "Windows API MessageBox returned " & CStr(r)& vbCrLf & "(IDOK = " & CStr(IDOK) & ", IDCLOSE = " & CStr(IDCLOSE) & ")" Return s End Function End Class
Anda dapat menguji fungsi
messageThroughWindows
dengan kode berikut.Public Sub consumeWindowsMessage() Dim w As New windowsMessage w.messageThroughWindows() End Sub
Perhatian
Jenis data
UInteger
,ULong
,UShort
, danSByte
bukan bagian dari Kemandirian Bahasa dan Komponen Mandiri Bahasa (CLS), sehingga kode yang mematuhi CLS tidak dapat menggunakan komponen yang menggunakannya.Penting
Melakukan panggilan ke kode tidak terkelola, seperti antarmuka pemrograman aplikasi (API) Windows, memaparkan kode Anda terhadap potensi risiko keamanan.
Penting
Pemanggilan API Windows memerlukan izin kode tidak terkelola, yang dapat memengaruhi eksekusinya dalam situasi kepercayaan parsial. Untuk informasi selengkapnya, lihat SecurityPermission dan Izin Akses Kode.