Bagikan melalui


Cara: Memanggil Fungsi Windows yang Mengambil Jenis Tidak Ditandatangani (Visual Basic)

Jika Anda menggunakan kelas, modul, atau struktur yang memiliki anggota jenis bilangan bulat yang tidak ditandatangani, Anda dapat mengakses anggota ini dengan Visual Basic.

Untuk memanggil fungsi Windows yang menggunakan tipe tanpa tanda

  1. Gunakan Pernyataan Deklarasikan untuk memberi tahu Visual Basic pustaka mana yang menyimpan fungsi, apa namanya di pustaka itu, urutan panggilannya, dan cara mengonversi string saat memanggilnya.

  2. Dalam pernyataan Declare, gunakan UInteger, ULong, UShort, atau Byte yang sesuai untuk setiap parameter dengan jenis yang tidak ditandatangani.

  3. Lihat dokumentasi untuk fungsi Windows yang Anda panggil untuk menemukan nama dan nilai konstanta yang digunakannya. Banyak dari ini didefinisikan dalam file WinUser.h.

  4. Deklarasikan konstanta yang diperlukan dalam kode Anda. Banyak konstanta Windows adalah nilai yang tidak ditandatangani 32-bit, dan Anda harus mendeklarasikan ini As UInteger.

  5. Panggil fungsi dengan cara normal. Contoh berikut memanggil fungsi MessageBoxWindows , yang mengambil argumen bilangan bulat yang tidak ditandatangani.

    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 UIntegerdata , ULong, UShort, dan SByte bukan bagian dari Kemandirian Bahasa dan Komponen Language-Independent (CLS), sehingga kode yang mematuhi CLS tidak dapat menggunakan komponen yang menggunakannya.

    Penting

    Melakukan panggilan ke kode yang tidak dikelola, seperti antarmuka pemrograman aplikasi Windows (API), memaparkan kode Anda terhadap potensi risiko keamanan.

    Penting

    Memanggil Windows API memerlukan izin kode yang tidak dikelola, yang dapat memengaruhi eksekusinya dalam situasi kepercayaan parsial. Untuk informasi selengkapnya, lihat SecurityPermission dan Izin Akses Kode.

Lihat juga