求解取得计算机名的程序。

ldxm8848 2007-06-24 03:01:52
大家好,以下是一道高新技术考试,单击按钮,取得本地计算机名的程序,考试在即,大家可以帮我解释下吗?
Private Sub Command1_Click()
Dim Name As String, Length As Long
Length = 255
Name = String(Length, 0) '这语句是什么意思?
ZYJMod1.GetComputerName Name, Length
Name = Left(Name, Length) '这语句是什么意思?
Label1.Caption = Name
End Sub
------
急复,谢谢!
...全文
141 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Public Const ERROR_SUCCESS As Long = 0

Public Const MAX_DOMAIN_NAME_LEN As Long = 128

Public Const MAX_HOSTNAME_LEN As Long = 128

Public Const MAX_SCOPE_ID_LEN As Long = 256

Public Type IP_ADDRESS_STRING
IpAddr(0 To 15) As Byte
End Type

Public Type IP_MASK_STRING
IpMask(0 To 15) As Byte
End Type

Public Type IP_ADDR_STRING
dwNext As Long
IpAddress As IP_ADDRESS_STRING
IpMask As IP_MASK_STRING
dwContext As Long
End Type

Public Type FIXED_INFO
HostName(0 To (MAX_HOSTNAME_LEN + 3)) As Byte
DomainName(0 To (MAX_DOMAIN_NAME_LEN + 3)) As Byte
CurrentDnsServer As IP_ADDR_STRING
DnsServerList As IP_ADDR_STRING
NodeType As Long
ScopeId(0 To (MAX_SCOPE_ID_LEN + 3)) As Byte
EnableRouting As Long
EnableProxy As Long
EnableDns As Long
End Type

Public Declare Function GetNetworkParams Lib "iphlpapi.dll" _
(pFixedInfo As Any, pOutBufLen As Long) As Long

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public szDomainName As String

Private Function GetHostName() As String
Dim buff() As Byte
Dim cbRequired As Long
Dim nStructSize As Long
Dim Info As FIXED_INFO

Call GetNetworkParams(ByVal 0&, cbRequired)
If cbRequired > 0 Then
ReDim buff(0 To cbRequired - 1) As Byte
If GetNetworkParams(buff(0), cbRequired) = ERROR_SUCCESS Then
CopyMemory Info, ByVal VarPtr(buff(0)), LenB(Info)
GetHostName = TrimNULL(StrConv(Info.HostName, vbUnicode))
szDomainName = TrimNULL(StrConv(Info.DomainName, vbUnicode))


End If
End If
End Function

Private Function TrimNULL(item As String)
Dim pos As Integer
pos = InStr(item, Chr$(0))
If pos Then
TrimNULL = Left$(item, pos - 1)
Else
TrimNULL = item
End If
End Function

Private Sub Command1_Click()
Text1.Text = GetHostName()
Text2.Text = szDomainName
End Sub
lizhigao 2007-06-24
  • 打赏
  • 举报
回复
第一句是填充Length长度的空字符。用于分配空间,因为要调用API。API是用C写的,用的是指针

第二句是截取Length长度的字符,以为返回的是指针,所以长度是不固定的

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧