Antoine.st Win 32A P I in Dot Net

How to use Win32 API in dotNet

vb@ml.acty-net.ne.jp の [vb 24348] ユーザー名の取得 で、これらの Win32 API がうまく動かないという話題が出ていたので、ちょっと追試してみました。結果としては、何の問題もなく動きましたけど...。


  Imports System.Text
  Imports System.Runtime.InteropServices

  <DllImport("advapi32.dll")> _
  Public Shared Function GetUserName( _
     ByVal lpBuffer As StringBuilder, _
     ByRef nSize As Integer) As Boolean
  End Function

  <DllImport("Mpr.dll")> _
  Public Shared Function WNetGetUser( _
      ByVal lpName As String, _
      ByVal lpUserName As StringBuilder, _
      ByRef lpnLength As Integer) As Integer
  End Function

  '
  ' By GetUserName() API
  '
  Private Sub Button1_Click( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs _
  ) Handles Button1.Click

      Dim sb As StringBuilder = New StringBuilder(100)
      Dim ln As Integer = sb.Capacity
      Dim result As Boolean

      result  = GetUserName(sb, ln)

      MsgBox(sb.ToString())

  End Sub

  '
  ' By WNetGetUser() API
  '
  Private Sub Button2_Click( _
      ByVal sender As System.Object, _
      ByVal e As System.EventArgs _
  ) Handles Button2.Click

      Dim sb As StringBuilder = New StringBuilder(100)
      Dim ln As Integer = sb.Capacity
      Dim result As Integer

      result = WNetGetUser(vbNullString, sb, ln)

      MsgBox(sb.ToString())

  End Sub