是否可以联网 wininet

  1. 判断网络的是否连接或者连接方式,比较重要的一点就是是不是即时判断,如果你明明无连接,判断出来却说你有,连接上了,却说你还未连接,下面要介绍的两个方法中 InternetGetConnectedState就是不怎么够即时的API函数,而第二个使用的是IsNetworkAlive这个API函数,这个没有InternetGetConnectedState的那种问题,但是可能需要安装SDK,也就是.Net框架。  
  2.   
  3.    
  4.   
  5.    
  6.   
  7. 一、InternetGetConnectedState  
  8.   
  9.    
  10.   
  11. 在DELPHI中 引用wininet这个单元就可以直接使用 InternetGetConnectedState函数了,下面给出一个判断当前网络连接状态的函数,在注释中会一一解释它的一些相关返回值的含义。  
  12.   
  13.    
  14.   
  15. uses wininet; //这个已经说了 必须引用它才可以使用InternetGetConnectedState函数  
  16.   
  17.    
  18.   
  19. function ConnectionKind :boolean;   
  20. var flags: dword;   
  21. begin   
  22.   Result := InternetGetConnectedState(@flags, 0);   
  23.     if Result then   
  24.       begin   
  25.         if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then showmessage('在线:拨号上网');   
  26.         if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then showmessage('在线:通过局域网');   
  27.         if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then showmessage('在线:代理');   
  28.         if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then showmessage('MODEM被其他非INTERNET连接占用');   
  29.       end//if  
  30. end//function  
  31.   
  32. 过程结束 下面说下各各返回值的意思:   
  33. INTERNET_CONNECTION_MODEM:  //现在是通过拨号方式上网的  
  34. INTERNET_CONNECTION_LAN:   //现在是通过局域网上网的  
  35. INTERNET_CONNECTION_PROXY:  //现在是通过代理上网的  
  36. INTERNET_CONNECTION_MODEM_BUSY:  //现在MODEM被其他非INTERNET连接占用(离线)  
  37.   
  38. 以上就是通过使用InternetGetConnectedState函数实现的判断网络状态的方法  
  39.   
  40.   
  41.   
  42. --------------------------------------------------------------------------------  
  43.   
  44.   
  45. 二、IsNetworkAlive  
  46.   
  47. Delphi中没有对这个函数进行声明,所以我们要自己声明,请把下面的代码加入到当前窗体或者单元的 声明全局变量的地方 也就是第一个var下面。  
  48.   
  49. Function IsNetworkAlive(var lpdwFlagsLib:Integer):Integer;stdcall;external'SENSAPI.DLL';  
  50.   
  51. 还有要定义三个常量:  
  52.   
  53. Const NETWORK_ALIVE_LAN = 1;  //通过局域网上网  
  54. Const NETWORK_ALIVE_WAN = 2;  //通过广域网上网  
  55. Const NETWORK_ALIVE_AOL = 4;  //仅对98\95有效判断是否联上美国网络  
  56.   
  57. 下面还是给出一个过程来判断当前网络的状态,这次是一个过程  
  58.   
  59. procedure ShowNetWorkState();  
  60. var  
  61. falg:integer;  
  62. Bos:boolean;  
  63. begin  
  64.   Bos:=false;  
  65.   IsNetworkAlive(falg);  
  66.   case falg of  
  67.     NETWORK_ALIVE_LAN:  
  68.       begin  
  69.         Showmessage('通过局域网上网。');  
  70.         Bos:=true;  
  71.       end;  
  72.     NETWORK_ALIVE_WAN:  
  73.       begin  
  74.       Showmessage('通过广域网上网。');  
  75.         Bos:=true;  
  76.       end;  
  77.     NETWORK_ALIVE_AOL:  
  78.       begin  
  79.         Showmessage('联上美国的网络。');  //仅对98\95有效所以一般不用判断NETWORK_ALIVE_AOL  
  80.         Bos:=true;  
  81.       end;  
  82.     else Showmessage('没有联网。');  
  83.   end;   //case  
  84.   if Bos then Showmessage('你现在是联网状态!')  
  85.   else Showmessage('你现在是离线状态!');  
  86. end;  
  87.   
  88.    
  89.   
  90. 这个我就不多做解释了,上面的这两个方法是可以用来判断网络连接的方式,也可以用来判断网络是否连通。   
  91.   
  92.   
  93.   
  94. --------------------------------------------------------------------------------  
  95.   
  96.   
  97. 下面再介绍一个方法可以判断网络是否连通的。  
  98.   
  99. 三、URL.DLL中的InetIsOffline函数。   
  100.   
  101. Delphi中没有对该函数进行声明,所以我们要自己声明,这跟上面的第二种方法的声明是同个道理  
  102. 函数申明为:   
  103. function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';   
  104.   
  105.   
  106. 然后就可以调用函数判断系统是否连接到INTERNET   
  107.   
  108.   
  109. if InetIsOffline(0then ShowMessage('没有连接到网络')  
  110. else ShowMessage('已经连接到网络');   
  111.   
  112.   
  113. 该函数返回TRUE说明本地系统没有连接到INTERNET。   
  114. 附:   
  115. 大多数装有IE或OFFICE97的系统都有此DLL可供调用。   
  116. InetIsOffline   
  117. BOOL InetIsOffline(   
  118. DWORD dwFlags,   
  119. );   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值