Private Declare Function RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByRef Length As Long)
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function NetApiBufferFree Lib "NETAPI32.DLL" (Buffer As Any) As Long
Private Type USER_INFO_0
usri0_name As Long
End Type
Dim lngWin32apiResultCode As Long
Dim strServerName As String
Dim lngBufPtr As Long
Dim lngMaxLen As Long
Dim lngEntriesRead As Long
Dim lngTotalEntries As Long
Dim lngResumeHandle As Long
Dim udtUserInfo0 As USER_INFO_0
Dim lngEntry As LongPrivate Sub Command1_Click()
strServerName = StrConv("", vbUnicode)
Do
lngWin32apiResultCode = NetUserEnum(strServerName, 0, 0, lngBufPtr, lngMaxLen, lngEntriesRead, lngTotalEntries, lngResumeHandle)
If (lngWin32apiResultCode = NERR_Success) Or (lngWin32apiResultCode = ERROR_MORE_DATA) Then
For lngEntry = 0 To lngEntriesRead - 1
RtlMoveMemory udtUserInfo0, ByVal lngBufPtr + Len(udtUserInfo0) * lngEntry, Len(udtUserInfo0)
cboUsers.AddItem PointerToString(udtUserInfo0.usri0_name)
Next
End If
If lngBufPtr <> 0 Then
NetApiBufferFree lngBufPtr
End If
Loop Until lngEntriesRead = lngTotalEntriesEnd Sub
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function NetApiBufferFree Lib "NETAPI32.DLL" (Buffer As Any) As Long
Private Type USER_INFO_0
usri0_name As Long
End Type
Dim lngWin32apiResultCode As Long
Dim strServerName As String
Dim lngBufPtr As Long
Dim lngMaxLen As Long
Dim lngEntriesRead As Long
Dim lngTotalEntries As Long
Dim lngResumeHandle As Long
Dim udtUserInfo0 As USER_INFO_0
Dim lngEntry As LongPrivate Sub Command1_Click()
strServerName = StrConv("", vbUnicode)
Do
lngWin32apiResultCode = NetUserEnum(strServerName, 0, 0, lngBufPtr, lngMaxLen, lngEntriesRead, lngTotalEntries, lngResumeHandle)
If (lngWin32apiResultCode = NERR_Success) Or (lngWin32apiResultCode = ERROR_MORE_DATA) Then
For lngEntry = 0 To lngEntriesRead - 1
RtlMoveMemory udtUserInfo0, ByVal lngBufPtr + Len(udtUserInfo0) * lngEntry, Len(udtUserInfo0)
cboUsers.AddItem PointerToString(udtUserInfo0.usri0_name)
Next
End If
If lngBufPtr <> 0 Then
NetApiBufferFree lngBufPtr
End If
Loop Until lngEntriesRead = lngTotalEntriesEnd Sub
解决方案 »
- 后台程序如何向当前活动窗口的文本框控件(已获焦点)发送字符串?
- 十万火急!如何用VB开发IE插件?
- VB調用默認的發EMAIL的程序﹐有點復雜。請教各位﹗在線等﹗急﹗
- 有谁知道怎么保存几个VSFLEXGRID控件里的内容啊
- 请问:vb里面,references 和 component 两种方法,有什么区别?
- 一个困扰我的问题,各位大虾救我!!!!
- 请问VB6中的“版本兼容”下的各选项都是灰色不可选的?
- 请问DAO和MSFLEXGRID的联接问题!!!
- 怎样用程序控制按下鼠标的动作,例如在关闭金山毒霸病毒防火墙时不用单击确定或取消.
- 如何在VB中,调用Excel.Application对象
- 用VB对bit操作出现溢出问题
- 关于VB和SQL数据库日期查询的方法 紧急求救
试一下
Private Declare Function RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByRef Length As Long)
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function NetApiBufferFree Lib "netapi32.dll" (Buffer As Any) As Long
Private Type USER_INFO_0
usri0_name As Long
End Type
Dim lngWin32apiResultCode As Long
Dim strServerName As String
Dim lngBufPtr As Long
Dim lngMaxLen As Long
Dim lngEntriesRead As Long
Dim lngTotalEntries As Long
Dim lngResumeHandle As Long
Dim udtUserInfo0 As USER_INFO_0
Dim lngEntry As Long
Private Sub Command1_Click()
strServerName = StrConv("", vbUnicode)
Do
lngWin32apiResultCode = NetUserEnum(strServerName, 0, 0, lngBufPtr, lngMaxLen, lngEntriesRead, lngTotalEntries, lngResumeHandle)
If (lngWin32apiResultCode = NERR_Success) Or (lngWin32apiResultCode = ERROR_MORE_DATA) Then
For lngEntry = 0 To lngEntriesRead - 1
RtlMoveMemory udtUserInfo0, ByVal lngBufPtr + Len(udtUserInfo0) * lngEntry, Len(udtUserInfo0)
cboUsers.AddItem PointerToString(udtUserInfo0.usri0_name)
Next
End If
If lngBufPtr <> 0 Then
NetApiBufferFree lngBufPtr
End If
Loop Until lngEntriesRead = lngTotalEntries
End SubFunction PointerToString(lngPointer As Long) As String
''把返回的ASCII代码转换成字符
Dim bytBuffer(255) As Byte
lstrcpy bytBuffer(0), ByVal lngPointer
PointerToString = Left$(bytBuffer, lstrlen(lngPointer))
End Function提示缺少PointerToString这个函数未定义我在网上找了一个PointerToString函数 ,结果还不行