本人编写一个程序需要访问其他机器的内容,就是要允许用户使用如 \\name的方式输入他想访问的机子,然后我按照他给的计算机名name 列出一个目录列表供他选择。如同资源管理器那样。
现在的问题是如何判断用户给的计算机名是存在的并且可以连接。及只要用户在运行菜单敲\\name可以访问的,我这里一样可以。
当前我使用的是 InternetCheckConnection(http://name, 1, 0) 这样的方式。
有的机子返回真,有的返回假。不知何故? 请指正,或提出更好的办法。
我的局域网中大约有70台机器,我试了一下,只有该机器的80端口是开着的机器,用
InternetCheckConnection(http://name, 1, 0) 才返回true,其他均返回false。
你还是用indy控件算了,ping一下机器,如有返回,则该机开着。
难说呀 如果网速极慢的话建议有个时间限制,过期则认为是个无效链接
I/O错误估计是这句还未退出的缘故:
winexec(pchar(cmd /C net view \\+ strTemp + >> + tempfile ), sw_hide);
sleep(1000);--加大一点就没问题,我设为5000就不出错。
我觉得你用了sw_hide参数,估计难于findwindow,倒不如这样:
while not fileexists(tempfile) do
sleep(1000);
sleep(1000); //500~1000