Aracılığıyla paylaş


Nasıl yapılır: İmzasız Türler Alan 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. Declare deyiminde, işaretsiz bir türe sahip her parametre için uygun olan UInteger, ULong, UShort veya Byte kullanın.

  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 MessageBox Windows işlevi ç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

    UInteger, ULong, UShortve SByte veri türleri Dil Bağımsızlığı ve Language-Independent Bileşenleri'nin (CLS) bir parçası değildir, bu nedenle CLS uyumlu kod bunları kullanan bir bileşeni kullanamaz.

    Ö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 bakınız