用Delphi即时判断当前的网络的连接方式
判断网络的是否连接或者连接方式,比较重要的一点就是是不是即时判断,如果你明明无连接,判断出来却说你有,连接上了,却说你还未连接,下面要介绍的两个方法中 InternetGetConnectedState就是不怎么够即时的API函数,而第二个使用的是IsNetworkAlive这个API函数,这个没有InternetGetConnectedState的那种问题,但是可能需要安装SDK,也就是.Net框架。
一、InternetGetConnectedState
在DELPHI中 引用wininet这个单元就可以直接使用 InternetGetConnectedState函数了,下面给出一个判断当前网络连接状态的函数,在注释中会一一解释它的一些相关返回值的含义。
uses wininet; //这个已经说了 必须引用它才可以使用InternetGetConnectedState函数
function ConnectionKind :boolean;
var flags: dword;
begin
Result := InternetGetConnectedState(@flags, 0);
if Result then
begin
if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then showmessage('在线:拨号上网');
if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then showmessage('在线:通过局域网');
if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then showmessage('在线:代理');
if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then showmessage('MODEM被其他非INTERNET连接占用');
end; //if
end; //function
过程结束 下面说下各各返回值的意思:
INTERNET_CONNECTION_MODEM: //现在是通过拨号方式上网的
INTERNET_CONNECTION_LAN: //现在是通过局域网上网的
INTERNET_CONNECTION_PROXY: //现在是通过代理上网的
INTERNET_CONNECTION_MODEM_BUSY: //现在MODEM被其他非INTERNET连接占用(离线)
以上就是通过使用InternetGetConnectedState函数实现的判断网络状态的方法
--------------------------------------------------------------------------------
二、IsNetworkAlive
Delphi中没有对这个函数进行声明,所以我们要自己声明,请把下面的代码加入到当前窗体或者单元的 声明全局变量的地方 也就是第一个var下面。
Function IsNetworkAlive(var lpdwFlagsLib:Integer):Integer;stdcall;external'SENSAPI.DLL';
还有要定义三个常量:
Const NETWORK_ALIVE_LAN = 1; //通过局域网上网
Const NETWORK_ALIVE_WAN = 2; //通过广域网上网
Const NETWORK_ALIVE_AOL = 4; //仅对98\95有效判断是否联上美国网络
下面还是给出一个过程来判断当前网络的状态,这次是一个过程
procedure ShowNetWorkState();
var
falg:integer;
Bos:boolean;
begin
Bos:=false;
IsNetworkAlive(falg);
case falg of
NETWORK_ALIVE_LAN:
begin
Showmessage('通过局域网上网。');
Bos:=true;
end;
NETWORK_ALIVE_WAN:
begin
Showmessage('通过广域网上网。');
Bos:=true;
end;
NETWORK_ALIVE_AOL:
begin
Showmessage('联上美国的网络。'); //仅对98\95有效所以一般不用判断NETWORK_ALIVE_AOL
Bos:=true;
end;
else Showmessage('没有联网。');
end; //case
if Bos then Showmessage('你现在是联网状态!')
else Showmessage('你现在是离线状态!');
end;
这个我就不多做解释了,上面的这两个方法是可以用来判断网络连接的方式,也可以用来判断网络是否连通。
--------------------------------------------------------------------------------
下面再介绍一个方法可以判断网络是否连通的。
三、URL.DLL中的InetIsOffline函数。
Delphi中没有对该函数进行声明,所以我们要自己声明,这跟上面的第二种方法的声明是同个道理
函数申明为:
function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';
然后就可以调用函数判断系统是否连接到INTERNET
if InetIsOffline(0) then ShowMessage('没有连接到网络')
else ShowMessage('已经连接到网络');
该函数返回TRUE说明本地系统没有连接到INTERNET。
附:
大多数装有IE或OFFICE97的系统都有此DLL可供调用。
InetIsOffline
BOOL InetIsOffline(
DWORD dwFlags,
);
http://blog.csdn.net/chinazhd/article/details/45060081
用Delphi即时判断当前的网络的连接方式的更多相关文章
- 4.ClassLink - 一种新型的VPC 经典网络的连接方式
阿里云CLassLink文档地址:https://help.aliyun.com/document_detail/65412.html?spm=a2c4g.11186623.2.9.41a25a07F ...
- iOS学习之判断是否有网络的方法
在实际开发中, 会有这样一个需求: 用户在有网的状态下会直接从网络请求数据, 在没网的情况下直接从本地读取数据. 下边的方法可以判断是否有网络. - (BOOL)connectedToNetwork ...
- Reachability(判断网络是否连接)
类似于一个网络状况的探针. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabili ...
- 判断网络是否连接 和 判断GPS是否连接
//判断网络是否连接 public static Boolean isNetworkEnabled(Context context){ int status=-1 //设置默认连接的状态为-1 Co ...
- Android判断网络是否连接
<!-- 配置文件判断网络是否连接 --> <uses-permission android:name="android.permission.ACCESS_NETWORK ...
- Reachability判断网络是否连接
类似于一个网络状况的探针. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabili ...
- 判断GPS、网络是否开启
判断GPS.网络是否开启 1.判断GPS打开与否,没有打开则打开GPS private void initGPS(Context context) { LocationManager location ...
- c# 判断网络是连接到互联网
方法1:InternetGetConnectedState [System.Runtime.InteropServices.DllImport("wininet") ...
- android 开发中判断网络是否连接的代码
在android的开发中,尤其是与访问网络有关的开发,都要判断一下手机是否连接上了网络,下面是一个判断是否连接网络的嗲吗片段: package cn.com.karl.util; import com ...
随机推荐
- 工欲善其事必先利其器--------搭建Android平台
工欲善其事必先利其器--------搭建Android平台 1.1 安装JDK 在Eclipse的开发过程中需要JDK或JRE的支持,否则会报错. (1) 下载JDK(建 ...
- jQuery实现点击开关图片切换
原型大概是这样的 image 需求:点击右侧的蓝色眼睛,会变成 关键代码: /* 实现图片切换 */ $(".imgclick").toggle(function(){ $(thi ...
- [TypeStyle] Use fallback values in TypeStyle for better browser support
You can increase the browser support of your CSS using fallback values and vendor prefixes. This les ...
- EntityFrameworkCore 中的 Attach 方法
Attach 的坑 Model Filed Database Value Console Value User Phone +123000000000 +12333333333 User Email ...
- 【topcoder SRM 702 DIV 2 250】TestTaking
Problem Statement Recently, Alice had to take a test. The test consisted of a sequence of true/false ...
- Java获取文件路径的几种方法
第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...
- Ubuntu su 认证失败
在使用Ubuntu作为开发环境时经常须要在全局安装一些依赖框架等.这个时候就经常须要用到root权限.可是在Ubuntu下第一次使用su命令时会提示认证失败:查找资料后发现Ubuntu下root权限默 ...
- ExtJs中window用法
1.显示html var htmlTitle = "<div style='width:100%;text-align:center'>"; var fruits = ...
- 微信开发学习日记(七):开源微商城wemall
最近嘛,不是在调研PHP和微信的行情么. 发现,微商城是非常火爆的一个领域,既然业务有搞头,那么技术这一块也有很多选择. 网上发现了wemall这个开源的PHP实现的微商城. 下载了开源版本,PHP后 ...
- [Grid Layout] Describe a grid layout using grid-template-areas
We can describe the nature of a grid in an ‘ASCII-art’ way with grid-template-areas. Let’s see how t ...