本人编写一个程序需要访问其他机器的内容,就是要允许用户使用如 \\name的方式输入他想访问的机子,然后我按照他给的计算机名name 列出一个目录列表供他选择。如同资源管理器那样。
现在的问题是如何判断用户给的计算机名是存在的并且可以连接。及只要用户在运行菜单敲\\name可以访问的,我这里一样可以。
当前我使用的是 InternetCheckConnection('http://name', 1, 0) 这样的方式。
有的机子返回真,有的返回假。不知何故? 请指正,或提出更好的办法。
现在的问题是如何判断用户给的计算机名是存在的并且可以连接。及只要用户在运行菜单敲\\name可以访问的,我这里一样可以。
当前我使用的是 InternetCheckConnection('http://name', 1, 0) 这样的方式。
有的机子返回真,有的返回假。不知何故? 请指正,或提出更好的办法。
InternetCheckConnection('http://name', 1, 0) 才返回true,其他均返回false。你还是用indy控件算了,ping一下机器,如有返回,则该机开着。
如果该机器可以访问就不会有问题,如果该机器不存在,则在reset(f); 是会报I/O错误
但是如果在此处设一个断点,就不会报错,何故?不解? strTemp := 'test';
tempfile := 'E:\temp1999.txt';
if fileexists(tempfile) then
deletefile(tempfile);
winexec(pchar('cmd /C net view \\'+ strTemp +'>>'+tempfile),sw_hide);
while not fileexists(tempfile) do
sleep(1000);
try
AssignFile(f,tempfile);
reset(f);
size := FileSize(f);
finally
closefile(f);
end;
if size > 0 then
winexec(pchar('cmd /C net view \\'+ strTemp +' >> ' + tempfile ), sw_hide);sleep(1000);--加大一点就没问题,我设为5000就不出错。
if hwindow<>0 then begin
postMessage(hwindow,wm_sysCommand,sc_close,0);
// 或 sendMessage(hwindow,wm_sysCommand,sc_close,0); end;
while not fileexists(tempfile) do
sleep(1000);
sleep(1000); //500~1000
我还是加大点时间吧。谢谢!