Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você estiver consumindo uma classe, módulo ou estrutura com membros de tipos inteiros não assinados, poderá acessar esses membros com o Visual Basic.
Para chamar uma função do Windows que use um tipo não assinado
Use uma Instrução Declare para informar ao Visual Basic qual biblioteca contém a função, qual é o nome dela nessa biblioteca, qual é a sequência de chamadas e como converter cadeias de caracteres ao chamá-la.
Na instrução
Declare
, useUInteger
,ULong
,UShort
ouByte
conforme apropriado para cada parâmetro com um tipo não assinado.Consulte a documentação da função do Windows que você está chamando para localizar os nomes e valores das constantes que ele usa. Muitos deles são definidos no arquivo WinUser.h.
Declare as constantes necessárias em seu código. Muitas constantes do Windows são valores sem sinal de 32 bits e você deve declará-las
As UInteger
.Chame a função da maneira normal. O exemplo a seguir chama a função
MessageBox
do Windows, que usa um argumento inteiro sem sinal.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
Você pode testar a função
messageThroughWindows
com o código a seguir.Public Sub consumeWindowsMessage() Dim w As New windowsMessage w.messageThroughWindows() End Sub
Cuidado
Os tipos de dados
UInteger
,ULong
,UShort
, eSByte
não fazem parte do CLS (Language Independence and Language-Independent Components), portanto, um código em conformidade com o CLS não pode consumir um componente que os utiliza.Importante
Fazer uma chamada para código não gerenciado, como a API (interface de programação de aplicativo) do Windows, expõe seu código a possíveis riscos de segurança.
Importante
Chamar a API do Windows requer permissão de código não gerenciada, o que pode afetar sua execução em situações de confiança parcial. Para obter mais informações, consulte SecurityPermission e permissões de acesso ao código.