说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

谁知道怎样检测拨号连接状态?谢谢各位大哥。

编辑:说三道四文库 发布时间:2017-04-24 07:56
HTML文档下载 WORD文档下载 PDF文档下载
谁知道怎样检测拨号连接状态?谢谢各位大哥。
wy2000@sina.com
以前有相关的帖子,查找一下好了。
DWORD dwConnectState;
CString strConnectState;
BOOL bOK = InternetGetConnectedState( &dwConnectState, 0);
if ( bOK )
{
  if ( dwConnectState & INTERNET_CONNECTION_LAN )
    strConnectState = "Local system uses a local area network to connect to the Internet. ";
  if ( dwConnectState & INTERNET_CONNECTION_MODEM )
    strConnectState = "Local system uses a modem to connect to the Internet. ";
  if ( dwConnectState & INTERNET_CONNECTION_MODEM_BUSY )
    strConnectState = "No longer used. ";
  if ( dwConnectState = INTERNET_CONNECTION_PROXY )
    strConnectState = "Local system uses a proxy server to connect to the Internet. ";
}
测试连接是否有效,可以用:InternetCheckConnection

检测计算机是否联网比较简单的做法可以通过一个 Win32 Internet(WinInet) 函数 InternetCheckConnection来实现;
这个函数的功能是检查是否能够建立 Internet 连接。
它的实现是在 %SystemRoot%\System32\wininet.dll 中,Delphi 调用声明在 WinInet.pas 中,
其 API 声明如下:

BOOL InternetCheckConnection(
    IN LPCSTR lpszUrl,
    IN DWORD dwFlags,
    IN DWORD dwReserved
);

参数的意义是:

lpszUrl: 需要测试能否建立连接的 URL 地址,可以为空;
dwFlags: 目前只能是 FLAG_ICC_FORCE_CONNECTION(这个常量 Delphi 中没有声明,其值为 $00000001);
dwReserved: 目前只能为 0。

调用的说明:

如果 lpszUrl 是非空的,Windows 从中解析出 Host 名然后 Ping 这个指定的 Host。
如果 lpszUrl 是空的,并且 WinInet 内部服务器的 database 中有一个关于最近的 Server 的纪录,Windows 就从这条纪录中解析出 Host 名然后 Ping 它。

如果能够成功的连接返回 True,否则返回 False;

以下是一个判断当前计算机是否联网的例子:

procedure TForm1.Button1Click(Sender: TObject);
begin
    if InternetCheckConnection('http://www.yahoo.com/', 1, 0) then
        edit1.text:= 'Connected'
    else
        edit1.text:= 'Disconnected';
end;

通过上述的方法只能检测出当前计算机是否物理联网,即网线是否接好,网卡是否能顺利工作,不能确定是否能够实现获得 Internet 服务,即是否能和 ISP 进行 Internet 连接。
这时可以通过另一个 Win32 Internet(WinInet) 函数 InternetQueryOption 来检测;
这个函数的功能是查询指定 Internet 句柄的状态、选项。
其 API 声明如下:

BOOL InternetQueryOption(
    IN HINTERNET hInternet,
    IN DWORD dwOption,
    OUT LPVOID lpBuffer,
    IN OUT LPDWORD lpdwBufferLength
);

参数的意义是:

hInternet:查询对象的 Internet 句柄(全局查询时为 nil),
dwOption:查询的项目;
lpBuffer:返回的查询结果;
lpdwBufferLength:查询结果的字节长度(包括 IN 和 OUT);

查询成功返回 True,否则返回 False;

我们要查询当前计算机的 Internet 连接状态时可以使用查询项目 INTERNET_OPTION_CONNECTED_STATE,

得到的 ConnectState 返回值可能是以下值的一个或几个值之和:

INTERNET_STATE_CONNECTED               :$00000001 连接状态;
INTERNET_STATE_DISCONNECTED            :$00000002 非连接状态(和 INTERNET_STATE_CONNECTED 对应);
INTERNET_STATE_DISCONNECTED_BY_USER    :$00000010 用户请求的非连接状态
INTERNET_STATE_IDLE                    :$00000100 连接状态,并且空闲
INTERNET_STATE_BUSY                    :$00000200 连接状态,正在响应连接请求

以下是一个判断当前计算机是否可以获得 Internet 服务的例子:

function TForm1.CheckOffline: boolean;
var
    ConnectState: DWORD;
    StateSize: DWORD;
begin
    ConnectState:= 0;
    StateSize:= SizeOf(ConnectState);
    result:= false;
    if InternetQueryOption(nil, INTERNET_OPTION_CONNECTED_STATE, @ConnectState, StateSize) then
        if (ConnectState and INTERNET_STATE_DISCONNECTED) <> 2 then result:= true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    if CheckOffline then
        edit1.text:= 'Connect To ISP'
    else
        edit1.text:= 'Disconnect To ISP';
end;

需要说明的是 InternetQueryOption 函数的检测结果只能表明当前的 Internet 设置是可用的,
并不能表示计算机一定能访问 Internet,例如网线掉了,网卡突然坏了之类的错误就没法检测出来,
要想检测当前计算机是否能够获得 Internet 服务了必须两个函数结合起来使用。

以上程序在 Win2000, Delphi5.0 下调试通过。

最后要提醒大家注意的是在 uses 中要加上 WinInet。
if GetSystemMetrics(SM_NetWork)<>0 then 
  ShowMessage('Connected');

用VB6.0中文版进行DHTML程序开发 用VB编写标准CGI程序 用VB编写留言板 用VB播放FLASH动画 用VB开发进程管理软件 VB用WinSock设计Chat程序 运用MSChart,生成统计图形-VB资料 向文本框等等控件的系统右键菜单里追加自己定义的菜单-VB资料 在VB中用定时控件实现长定时操作 在Visual Basic中,在GotFocus事件中快速选定文本 在程序中注册和注销 OCX 控件 -VB资料 在运行时维护DBGRID的栏位宽度-VB资料 VB怎样使用VB开发基于Sybase的C/S软件 VB怎样在运行时动态生成多个相同的控件 直接编辑VB中网格控制项的两种方法 自制控件方面的有关知识-VB资料 Unicode vs Ansi -VB资料 VB 中调用 Word 拼写检查 VB4.0安装程序的汉化 VB中对字符串的处理及其扩展 把符串中的一子串替换为另一子串 -VB资料 把数字转成英文字-VB资料 翻转一个字符串-VB资料 混合字符串的长度 -VB资料 将阿拉伯数字转成中文字的程式 -VB资料 将包含有Null结尾的字符串转换为VB字符串 切分字符串-VB资料 清除字符串中指定的字符 -VB资料 VB如何取得计算机的所有字型? VB如何取得中英混合字符串的长度? 使VB的网格控件具有输入功能 用VB打包的程序未何不能在98下使用 怎么样才能把新闻从一个网站A捉到一个网站B里? 高手进来帮忙! bcb如何创建数据库访问日志? 高手来帮忙 请教:java转换成unicode的方法 关于权限控制和日志文件的问题(在线等候)?????时间紧迫,help me! 关于报表显示的问题? 请问在PB里面发邮件有些什么方法啊?? 报表显示? 请问怎样获得本机网关??? 请教,TextBox绑定到Access的一个数值字段,textbox的内容超过8位时,自动变成了科学计数法表示 用csdn测试一下 在VB中怎样使用滚动条 請教一數據庫同步的問題,給分100,如下: 急急急!!!!请教大家? 嘻嘻,借宝地一用,谢一位朋友,先说明不是倒分贴、不是散分贴;nne998有请 一般大家做查询窗口时,是如何返回查询到的数值的? WIN2K不能启动,提示。。。。。。。。 pb的问题 一个简单问题:进入weblogic console的密码忘记了,怎么办,默认的用户名是什么来的, 怎样在从CWnd派生来的类中响应鼠标消息,象CButton那样??? 求救各位大虾!(重分相送) 关于查询语句 恢复数据库 openrowset语句,请进: C#语法String 如何编写一个速度测试程序 谁有用DataList控件编写的,集修改(编辑、更新)、添加和查询的源程序 我的Win2000坏了,想备份文件出来,硬盘SCSI的,拔不下来,大家帮帮忙,急!!! 有关用asp编写的新闻发布系统!!!! 大家好,一个矢量图编程实现的问题,谢谢! 急急急,150分一个钩子问题~~~~~~~[在线等] 欢迎各位高手参加项目方案讨论? C++ Primer是一本好书,但绝对不是大全 急问:Windows95 98各版本 Socket版本问题 如何改变整个系统中文字的字体? 快帮帮我,我想共享某一文件夹,思路是这样的:调用系统的“共享”对话框去实现。 求救从OnDraw()中创建子窗口--CButton对象的源代码? 使用数据库链接出错!!! 请教大家!如何间隔性的改变MSHFlexGrid 的栅格线的宽度或者颜色? 菜鸟问题! 请问VC++里头有没有二进制/八进制/十进制/十六进制之间进行直接转换的函数? 深圳市华强北佳和电子城的盗版软件商太黑了,他们的光盘几乎都没法读,质量相当的差!!!!!!!! 杭州的java程序员,咱们成立一个java协会吧?具体做些什么大家共同讨论。。支持者有分 apache在win2k下怎么实现目录保护啊 大侠请帮忙,关于case语句,送上100分!在线等待! 怎样使无标题栏的窗口的图标和控制菜单显示在任务栏上? 谁有playcase的,进来拿分! 关于键盘hook的问题 这是什么问题呀——在线等 8千瓦的电器需要多少安的开关8千瓦的电器需要什么样的开关和线才能没问题? 用扁担挑起两个物体,前端物体重180n,后端物体重120n,扁担长2米,扁担的重力不计.要是扁担平衡人的肩离扁担前段的距离应为多少? 某商品的成本为2000元,标价为2800 ,如果商店要以利润不低于5%的售价打折销售.那么最低可以打几折出售这些商品? 开关的安数怎么算 某人用一根1.5m长的扁担挑起两桶水.其中一桶水重300N,挂在距肩膀0.6m处,另一桶水重力为多少N?某人用一根1.5m长的扁担挑起两桶水.其中一桶水重300N,挂在距肩膀0.6m处,另一桶水重力为多少N? 关于标准摩尔燃烧焓的计算请问,那个由标准摩尔燃烧焓计算反应焓变的公是如何得出的?谢谢 颇尔滤芯,过滤器万鑫过滤净化设备厂的产品怎么样 某人用一根长为2m的扁担挑两物,两物垂G1=150N,G2=100N,问此人的肩膀应距离G1多远才能正好平衡? 急! 指出国际社会为防止全球变暖应做的行动和措施 AIRTAC电磁阀 那里有卖的?台湾亚德客气动元件原装台湾亚德客AIRTAC电磁阀 能取代颇尔过滤器的有那几家 含有等物质的量的Ca(OH)2和NaOH 慢慢通入CO2 发生的反应有含有等物质的量的Ca(OH)2和NaOH的溶液中,慢慢通入CO2 发生的反应有:(1) CO2+2NaOH == Na2CO3 + H2O (2) CO2 + Ca(OH)2 == CaCO3 + H2O(3) CO2 + H2O + CaCO3 == Ca 某商品进价为2000元,标价2500元,则商品的利润为500,利润率为多少,商品如果降价最地可打几折不会亏本 颇尔过滤器的联系方式颇尔过滤北京有限公司的联系方式若想联系货物运输方面的,应联系颇尔过路器有限公司的哪位呢?或者联系方式都行, 450吨压力机哪个厂家的好呢?价格不高而且质量还不错的压力机,有谁知道? 氨水中通入CO2,电离平衡向哪个方向移动 北京颇尔过滤器公司招人吗 315吨压力机哪里的质量好啊?有谁知道? 三十五平方的线可以承受多少千瓦的电流? 全球变暖 说明乐什么问题.现在至2020年 1.3℃ 到 2.1℃2021年至2030年 1.5℃ 到 2.8℃ …………………… 说明了什么- -. 机械式压力机与液压式压力机哪个好 车损险中的有现场指的是什么?譬如,车辆刮了隔离带的水泥石头,才算是有现场?才能让保险公司全额赔付,而不是只赔付70%. 为什么向氨水中通入NH3,电离平衡向右移动,电离程度却不一定增大? 请问就是通过用电器的最大电流是9安 3相4线供电的那么他的电功率是多少个千瓦 氯气 过氧化氢 臭氧 二氧化硫 分别使品红溶液变色的原理? 某商品进价是2000元,标价为3000元,商店要求利率不低于5%最低可以打几折 三相4线供电 每一相都接一220负载.请问中性线有电流吗.在什么情况下 不会产生电流.是在3相负载绝对平衡的时候吗那如果每一相220V负载不相同.中性线产生电流.那中心线的电流占最大(或最 氯气与二氧化硫混合通入品红溶液与它们单独通入品红中有何不同现象 一个用塑料薄膜覆盖的蔬菜大棚,长15米,横截面是一个半径为2米的半圆.问:搭建这个大棚大约要用多少平个用塑料薄膜覆盖的蔬菜大棚,长15米,横截面是一个半径为2米的半圆.问:搭建这个大 三相发电机上标的电流是54安指的是三相总和还是单根电流? 200吨压力机哪里的好呢?价格优惠,质量还不错的压力机,有知道的吗? 地球有什么特征? .准确测定溶质的摩尔极化度和摩尔折射度时,为何要外推到无限稀释. 某商品的进价是2000元,标价为2500元,商店要求以利润不低于20%的售价打折出售,该商品最多可打几折出售?用方程,设最多可打x折出售能获利20% 地球的特殊性,表现在哪? 什么是折射度 请问车损险指的是什么?比如我自己蹭电线杆上了造成掉漆是否属于车损险? 地球的特殊性表现为什么我看的是因为“地球上有高级智慧生命”可是我觉得应该是“地球上有大气”啊谁能告诉我那个是对的,顺便说一下另一个为什么不对 怎么解决温室效应 车损险指的是什么 区分naoh溶液和ca(oh)2,可用方法1.,什么?2.什么?写出化学方程式 将二氧化硫和氯气通入潮湿有色的物质 该物质褪色情况怎么样 口字傍加个壹 读什么 温室效应的后果(要数字说明)要***年后,……样,少开车**辆,***时间,会减少…… 氯气和二氧化硫是不是都能使有色物质永远退色 汽车的基本结构汽车有什么系统 工业制氨气:蒸发液态空气,利用___________________加以分离而制得氨气 so2能否使干燥有色布条褪色?RTSO2漂白需要水吗?潮湿的布条应该可以褪色吧?…………希望有人能回答~ 2004年我国汽车市场基本格局 氨气和氧气在空气中点燃 某商品成本2000元,标价2800元,如果商店将以利润不低于5%的售价打折出售,则最低可打几折出售此商品? 空气压缩机油可以用到螺杆式空压机里么如题.L-DAB150空气压缩机油.昆仑牌.空压机为阿特拉斯双螺杆式. 磷脂双分子层的亲水疏水性磷脂双分子层哪一部分是亲水的,哪部分是疏水的. 某商品的成本为2000元标价为2800元,如果商店要以利润不低于5%的售价打折销售,那么最低可以打几折出售这些商品 请问一个60安的漏电开关可以同时使用多少千瓦的电器? 请问压力机是如何产生压力的?我是理科盲来的,这样理解,压力=质量*9.8那压力怎么来? 某商品的成本价为2000元 标价为2800元 如果商店要以利润不低于 百分之5 的售价打折销售,最低打几折 7.5千瓦电机用100安断路器行吗?7.5千瓦电机带的气泵380电压用100安的断路器安全吗? 分离液态空气制作氧气是不是化学变化? 怎么用标准摩尔燃烧焓推出标准摩尔反应焓就是ΔrHmθ=-ΣνBΔcHmθ(B),是怎么推出来的 就是仿照标准摩尔生成焓推出标准摩尔反应焓一样
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘