在整个局域网中(涉及到不同的域或工作组),若知道了一台计算机的IP地址,如何得到它的计算机名。在DELPHI中如何用代码实现。
请各位指点!!!
请各位指点!!!
解决方案 »
- QReport问题,在线等,未解决前长期有效
- 晕倒!一个关于ModalResult赋值报错的问题。
- 关于锁定系统口,和treeview的onclick事件的问题!
- 问题没解决,再问:如何在delphi下如何将一简体字符串转换为繁体!高手帮忙!
- 求教:联结oracle世,用错误的用户名和密码登录数据库,为什么不按照例外中的错误提示进行显示,而显示英文的"invalid username/password
- 如何在dbgrid中用方格框显示逻辑字段?
- 一个小问题
- 绘制函数曲线的工具
- 谁用过Ehlib控件?DBGridEh控件的页脚属性怎么设?我想用页脚来计算一列的总值,怎么总显示0
- BASE64Encoder如何编码
- 一个关于DBGRID控件中的问题,希望各位能帮助解决!!
- 怎样能把JPEG图打包到资源文件中?在线等待
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then
begin
result:=StrPas(Hostent^.h_name)
end
else
begin
result:='';
end;
end;
procedure TSearchFileThread.Execute;//线程
Var
EnumHandle : THandle;
FileRS : TNetResource;
Buf : Array[1..500] of TNetResource;
BufSize : DWord;
Entries : DWord;
Result : Integer;
begin
mydir := mydir + #0;//mydir为工作组名时可以得到组内所有主机名
//mydir为主机名时可以得到机内所有共享文件夹名
FillChar(FileRS, SizeOf(FileRS) , 0);
With FileRS do begin
dwScope := 2;
dwType := 3;
dwDisplayType := 1;
dwUsage := 2;
lpRemoteName := @mydir[1];
end;
WNetOpenEnum( RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
@FileRS,
EnumHandle );
Repeat
Entries := 1;
BufSize := SizeOf(Buf);
Result := WNetEnumResource( EnumHandle,Entries,@Buf,BufSize );
If (Result = NO_ERROR) and (Entries = 1) then
begin
s:= StrPas(Buf[1].lpRemoteName); //得到网上资源名,主机或文件夹
Synchronize(AddFile); //Form1.ListBox1.Items.Add(s);
end ;
Until (Entries <> 1) or (Result <> NO_ERROR);
WNetCloseEnum( EnumHandle );
end;
如令mydir 为WorkGroup则可得到WorkGroup内所有计算机名
如令mydir 为\\201 则可得到主机//201内所有共享文件夹名
现在的问题是 如令mydir 为\\201\share (已知share为\\201内一共享文件夹),则
ListBox1内没有显示,即得不到 \\201\share 内的共享文件夹名和文件名。
不知何故,请教各位。这个问题我自己解决了!
可以用以下方法获得已知共享文件夹中的文件。
Found := FindFirst(mydir+'\*.*', $0000003F , searchrec);
while Found = 0 do
begin
listBox1.items.Add(searchrec.name);
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);