다음을 통해 공유


방법: 서명되지 않은 형식을 사용하는 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, UShort, 및 SByte 데이터 형식은 Language Independence and Language-Independent Components (CLS)의 일부가 아니므로 CLS 규격 코드는 이러한 데이터 형식을 사용하는 구성 요소를 사용할 수 없습니다.

    중요합니다

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

    중요합니다

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

참고하십시오