Nasıl yapılır: İmzalanmamış Türler İsteyen Bir Windows İşlevi Çağırma (Visual Basic)

İmzasız tamsayı türlerinin üyelerine sahip bir sınıf, modül veya yapı kullanıyorsanız, Visual Basic ile bu üyelere erişebilirsiniz.

İmzasız bir tür alan bir Windows işlevini çağırmak için

  1. Visual Basic'e işlevi hangi kitaplığın barındırdığını, bu kitaplıkta adının ne olduğunu, çağırma sırasının ne olduğunu ve çağırırken dizelerin nasıl dönüştürüldüğünü bildirmek için Bir Declare Deyimi kullanın.

  2. deyimindeDeclare, işaretsiz bir türe sahip her parametre için uygun olan , ULong, UShortveya Byte kullanınUInteger.

  3. Kullandığı sabitlerin adlarını ve değerlerini bulmak için çağırdığınız Windows işlevinin belgelerine bakın. Bunların çoğu WinUser.h dosyasında tanımlanır.

  4. Kodunuzda gerekli sabitleri bildirin. Birçok Windows sabiti 32 bit imzasız değerlerdir ve bunları As UIntegerbildirmeniz gerekir.

  5. İşlevi normal şekilde çağırın. Aşağıdaki örnekte, işaretsiz bir tamsayı bağımsız değişkeni alan Windows işlevi MessageBoxçağrılır.

    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
    

    İşlevi messageThroughWindows aşağıdaki kodla test edebilirsiniz.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    

    Dikkat

    , , ve veri türleri Dil Bağımsızlığı ve Dilden Bağımsız Bileşenler'in (CLS) parçası değildir, bu nedenle CLS uyumlu kod bunları kullanan bir bileşeni kullanamaz.SByteUShortULongUInteger

    Önemli

    Windows uygulama programlama arabirimi (API) gibi yönetilmeyen koda çağrı yapmak kodunuzu olası güvenlik risklerine maruz bırakır.

    Önemli

    Windows API'sini çağırmak, kısmi güven durumlarında yürütülmesini etkileyebilecek yönetilmeyen kod izni gerektirir. Daha fazla bilgi için bkz SecurityPermission . ve Kod Erişim İzinleri.

Ayrıca bkz.