如何编程实现WINDOWS那种对本地网络连接状态的检测???

Description of your first forum.

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子bluesnowly » 星期五, 2004年10月15日 15:21


请问在只有一台主机和一个集线器连接的这种最简单的情况下。如何编程来判断网线是否被拔掉,网络是否连接。就像WINDOWS右下脚系统托盘里的那个小电脑图标一样。当网线一拔就显示网络断开。要能满足上述的最简单的情况。请哪位帮我解答一下。谢谢
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子drawpharos » 星期五, 2004年10月15日 15:24


直接利用WMI提供的接口,但WMI不支持98系统,并且在2000下无意义
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子yxp132 » 星期五, 2004年10月15日 15:29



简单。。。
procedure TForm1.Button1Click(Sender: TObject);

 function GetOnlineStatus : Boolean;
 var ConTypes : Integer;
 begin
   ConTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
   if (InternetGetConnectedState(@ConTypes, 0) = False)
    then Result := False
    else Result := True;
 end;

begin
if GetOnlineStatus then
  ShowMessage(' Connected')
  else ShowMessage(' not Connected');
end;
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子bluesnowly » 星期五, 2004年10月15日 15:30


WMI在不支持98,2000下又无意义,那不是用不了嘛。

能不能说说具体能怎么实现呢?原理是什么
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子bluesnowly » 星期五, 2004年10月15日 15:35


这样就行了吗?我试试
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子bluesnowly » 星期五, 2004年10月15日 15:47


我试了一下你给的代码。不管我拔不拔网线。它的结果都是connect。

你的给的那个函数是和InternetQueryOption()差不多的功能吧。
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子drawpharos » 星期五, 2004年10月15日 16:00


上面的程序是检测Internet连接状态的,而不是检测网线是否插上的。他的响应大概要延迟两三秒钟。
如果拔与不拔网线都显示连接,那你系统中一定还有一块虚网卡或拨号适配器
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子bluesnowly » 星期五, 2004年10月15日 16:18


我这个机器上装了VMWEAR应该是有虚拟网卡。

我所说的网线是否插上,指的就是网络是否断开,是否出现故障。要2,3秒的时间好象有点长吧。WINDOWS的本地连接图标在网线拔下马上就边成叉了啊。
如果不检测虚网卡,和拨号适配器就把下面INTERNET_CONNECTION_MODEM
,INTERNET_CONNECTION_PROXY 两项取消掉??
 
 
 

如何编程实现WINDOWS那种对本地网络连接状态的检测???

帖子bluesnowly » 星期五, 2004年10月15日 16:31


drawpharos。上面那段程序你试过了吗??你是怎么检测出网络断开了的?

我在另外一台没装WMWARE,没有拨号适配器的机器上用了那个程序。在网线拔掉的情况下。它仍然是得出CONNECT。

那个函数我想是不是只能检测出你机器的网络配置能否上网。而查不错,机器是否物理上接上了网络。