방법: 부호 없는 형식을 사용하는 Windows 함수 호출(Visual Basic)
부호 없는 정수 유형의 멤버가 있는 클래스, 모듈 또는 구조체를 사용하는 경우 Visual Basic을 사용하여 이러한 멤버에 액세스할 수 있습니다.
부호 없는 형식을 사용하는 Windows 함수를 호출하려면
Declare 문을 사용하여 함수를 보유하는 라이브러리, 해당 라이브러리에서의 이름, 호출 시퀀스, 호출할 때 문자열을 변환하는 방법을 Visual Basic에 알립니다.
Declare
문에서 부호 없는 형식의 각 매개 변수에 적절하게UInteger
,ULong
,UShort
또는Byte
을(를) 사용합니다.호출하는 Windows 함수의 설명서를 참조하여 해당 함수가 사용하는 상수의 이름과 값을 찾아보세요. 이들 중 대부분은 WinUser.h 파일에 정의되어 있습니다.
코드에서 필요한 상수를 선언하세요. 많은 Windows 상수는 32비트의 부호 없는 값이며 이는
As UInteger
(으)로 선언해야 합니다.정상적인 방법으로 함수를 호출하세요. 다음 예제에서는 부호 없는 정수 인수를 사용하는 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
데이터 형식은 언어 독립성 및 언어 독립적 구성 요소 (CLS)에 속하지 않으므로 CLS 규격 코드는 해당 형식을 사용하는 구성 요소를 사용할 수 없습니다.Important
Windows API(애플리케이션 프로그래밍 인터페이스)와 같은 비관리 코드를 호출하면 코드가 잠재적인 보안 위험에 노출됩니다.
Important
Windows API를 호출하려면 비관리 코드 권한이 필요하며, 이는 부분 신뢰 상황에서의 실행에 영향을 줄 수 있습니다. 자세한 내용은 SecurityPermission 및 코드 액세스 권한을 참조하세요.
참고 항목
.NET