다음을 통해 공유


방법: 부호 없는 형식을 사용하는 Windows 함수 호출(Visual Basic)

부호 없는 정수 유형의 멤버가 있는 클래스, 모듈 또는 구조체를 사용하는 경우 Visual Basic을 사용하여 이러한 멤버에 액세스할 수 있습니다.

부호 없는 형식을 사용하는 Windows 함수를 호출하려면

  1. Declare 문을 사용하여 함수를 보유하는 라이브러리, 해당 라이브러리에서의 이름, 호출 시퀀스, 호출할 때 문자열을 변환하는 방법을 Visual Basic에 알립니다.

  2. Declare 문에서 부호 없는 형식의 각 매개 변수에 적절하게 UInteger, ULong, UShort 또는 Byte을(를) 사용합니다.

  3. 호출하는 Windows 함수의 설명서를 참조하여 해당 함수가 사용하는 상수의 이름과 값을 찾아보세요. 이들 중 대부분은 WinUser.h 파일에 정의되어 있습니다.

  4. 코드에서 필요한 상수를 선언하세요. 많은 Windows 상수는 32비트의 부호 없는 값이며 이는 As UInteger(으)로 선언해야 합니다.

  5. 정상적인 방법으로 함수를 호출하세요. 다음 예제에서는 부호 없는 정수 인수를 사용하는 Windows 함수 MessageBox을(를) 호출합니다.

    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
    

    다음 코드로 함수 messageThroughWindows을(를) 테스트할 수 있습니다.

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

    주의

    UInteger, ULong, UShortSByte 데이터 형식은 언어 독립성 및 언어 독립적 구성 요소 (CLS)에 속하지 않으므로 CLS 규격 코드는 해당 형식을 사용하는 구성 요소를 사용할 수 없습니다.

    Important

    Windows API(애플리케이션 프로그래밍 인터페이스)와 같은 비관리 코드를 호출하면 코드가 잠재적인 보안 위험에 노출됩니다.

    Important

    Windows API를 호출하려면 비관리 코드 권한이 필요하며, 이는 부분 신뢰 상황에서의 실행에 영향을 줄 수 있습니다. 자세한 내용은 SecurityPermission코드 액세스 권한을 참조하세요.

참고 항목