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

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

编辑:说三道四文库 发布时间:2017-03-27 07:06
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');

著名工业设计师Yves B&#233;har:“我们并不需要三星智能手表。” 跨平台的.NET运行环境 Mono 3.2.7发布! Google石博盟:抓住全球化和移动化的机遇 ShareSDK针对Unity发布社交化组件 2014 CocoaChina开发者大会将公布触控奖学金等高校合作计划 中低端智能手机热销,未来市场或主打价格战 Facebook开源flint:一个用D语言编写的C++静态代码分析器 AMD携手BlueStacks,下半年推出零售版双操作系统 历时6年 Github发布基于Web的桌面文本编辑器:Atom Ratchet:构建移动应用原型,新版支持Android 13个最狂帅炫酷的前沿科技研究项目 打动面试官的五大技能 乐视TV和NBA签约三年互联网电视版权 首度披露大屏运营策略 支撑4.5亿活跃用户的WhatsApp架构概览 免费使用Windows?微软推Windows 8.1 with Bing实验项目 C/C++开发者必不可少的15款编译器+IDE Amazon推荐,Facebook追踪,大数据时代的“狗仔队” NewSQL登场,NuoDB告诉你未来数据库什么样 2014 Unity亚洲开发者大会&#183;中国站:技术课程全面解析 与其坐以待毙不如主动出击 软件如何避免惨遭淘汰 一周消息树:程序员想找好工作?那就学好Linux! 移动周报:开发者必须了解的10大跨平台工具 一周热点:领先Google 150年的数据可视化及WhatsApp架构解析 R语言为Hadoop注入统计血脉 海外游戏市场:Google与“开心农场”谈破局 2014年2月操作系统份额:Windows仍在增长 Win 7以47.31%稳居第一 2014年2月份浏览器份额:IE 8仍全球最受欢迎,Firefox跌破18%大关 跨平台2D游戏引擎V-Play:3天开发一款原生游戏 Appery.io:无编程经验,自己也能DIY移动应用 SAP携手Xamarin和Service2Media 提供移动应用开发框架 8个超实用的jQuery技巧攻略 我想结束一个话题,回复次话题者得分。 密码忘了怎么办 数据库高手请进 关于AC97声卡(100芬) 如何将javascript对象中的内容保存到数据库中去???? 失恋了,非常郁闷,想散分都不行(各位开导开导) 在西文dos下,打开txt文件,并在屏幕上显示,怎么编程呀? 天理何在?为什么降我的信誉值,这个论坛谁说了算,出来说个理由。 Visual J++ 6.0的问题! 关于Word,IE等程序的设计模型问题? 在线等待BCB+Access 怎样实现如vc集成开发环境的控件窗口 关于asp.net控件使用中的一些问题 请问,怎样做出桌面动画(比如鸟在桌面上飞等等....) 文本处理里面可以包含图片么? 如何判断用户输入的是中文还是英文,数字,或者是非法的字幅。 简单问题,50分奉献! 一个关于序列的问题,各位帮帮忙!! 是不是程序中的配置文件.config只能在运行期间读取,而不能更新数据?如果能更新那怎样更新,我没有找到更新所用的类。 世界上最大的塔里班........ ???? 我还是不明白,这是为什么 ???????? 关于寻址 如何得到想要的Excel表中的正确行数,救命!!! 兴奋~收到borland公司的邀请涵,散分! 关于DTS transmit data !!请帮帮忙,谢谢 tc,dos下如何调用1cH中断,写定时程序,在线等待!急 有没有办法在一个ASPX页面里设置两个<form runat=server>? 100 求 Visual J++ 6.0 的下载地址(一定要能下载喔 :) 关于OLE控件中的移动问题? 连接Access数据库报错,如何解决?在线等候! 谁有evc开发的ssce数据库的源码 菜鸟提问:File|New|Other...下NewItems Dialog... 2002年2月25日Borland公司在国内推出Delphi认证考试 出个小问题来给大家看看,不要笑我呀 如何将*.cmp的文件存到ms sql server数据库? 我的窗口怎么处理不了方向键消息? 列举sql的触女器可以触发什么动作,能否回滚引起触发的事务 几个unix下的c菜问题请教 !!!!!!!!!!!!!!!!!!!!!!对socket技术开发有经验者,请帮助!!!!!!!!!!!!!! 为什么有时_variant_t变量不能转换为_bstr_t,而有时就可以?里面有什么奥妙? 高分求助!请问怎么去掉IE的最大化和最小化按钮!! 关于UltraDev中浏览的问题???? 请大家推荐几本vc与汇编混和编程的好书 为什么会这样呢?关不掉的对话框 菜鸟提问:Form 与 Frame 有何区别? 以下是Delphi帮助的说明,谁能帮忙解释一下? 流星花园 我在image的click()方法里定义的变量,为什么在image_dblclick()里不能用?? 请教一下:金山词霸的屏幕取单词,是如何用程序实现的? 用VC怎么实现生成一个虚拟目录? 那位朋友有2000命令行模式下命令操作的帮助手册? IIS虚拟主机的问题,请大家给解决呀! 高中有关库仑力的物理题在光滑的水平面,有两个完全一样的金属球AB带同种电荷,弹簧伸长x0,小球达到平衡,先将AB的带电量加倍,使小球重新达到平衡,设弹簧伸长x,问x与x0的关系. 在静电感应实验中,最终A带上-10的负8C(库仑)的电荷.在实验中,是电子由A转移到B还是由B转移到A?A .B得到或得到电子的数各是多少? 地球赤道有多大?帮忙呀!哦,错了,是多长! DTY涤纶长丝 低弹丝DTY FDY POY 萧山的公司 lsaac Newton 的生日? 古诗的第三句和第四句可以感受出作者什么样的心情. 点击[http://pinyin.cn/1ESjxNMio1t] 查看这张图片.[访问验证码是:667033请妥善保管]请问最后求合力的时候为什么要乘以2,求回答. LSAAC NEWTON的生日几月几日 牛顿是干什么的 POY是什么 谁知道Einstein.Madam Curie.hommas Edison.Lsaac Newton.Lu Xun.Chen Jingrun的生日 物体下落,只受重力和阻力,阻力恒定,是否一定是匀加速直线运动?有没有可能是匀减速? tex是什么意思 库仑力【物理】A,B两个点电荷的电荷量分别为Q ,q,A,B间用绝缘弹簧连接.平衡时弹簧伸长X,正确AQ不变q变为2q,平衡,伸长=2XBQ不变q变为2q,平衡,伸长请解释清楚怎么判断> , Newton生日唔该晒啦 地球赤道上圆周运动的物体所受的向心力仅仅是由万有引力提供的吗? 数学五年级上册有一个假分数,分子比分母多25,且分子比分母的4倍还多10,这个分数是多少? newton的生日是多少? 牛顿长什么样子 纺织纤维强度中单位1g/d等于多少cn/dtex? “枫桥夜泊”诗,诗人的景物描写给了人以怎么样的感觉?表达了怎么样的思想感情?张继写的,急用啊,帮个忙拉! 求动物三字词语 ()()马 ;()()虎;()()蛇;()()羊;()()鸡;()()牛;()(狗;()()龙;()()狼. 一个假分数,分子是分母的3倍多5,如果分子、分母同时剪去7,这个分数就无意义.这个 阅读下面一首诗,体会作者表达的思想感情左迁至蓝关示侄孙湘韩愈一封朝奏九重天,西贬潮州路八千.欲为圣明除弊事,肯将衰朽惜残年!云横秦岭家何在,雪拥蓝关马不前.知汝远来应有意,好收 各用一词,表示各种动物的住所 狗( ) 兔( ) 蛇( ) 猪( ) 羊( ) 虎( ) 牛( ) 鸡( 一个假分数,分子是分母的3倍少2,如果分子母同时减4,这个分数就无意义 两颗人造地球卫星质量之比为1:2,轨迹半径比为2:1,求它们的周期,向心力和向心加速度之比? 分子比分母()的分数叫做真分数,真分数()1. 一个假分数,分子比分母的三倍少3,如果分子,分母同时减去8,这个分数就无意义,这个分数是多少? 人造地球卫星所受的向心力与轨道半径r的关系,下列说法正确的是关于人造地球卫星所受的向心力与轨道半径r的关系,下列说法中正确的是( )A、由F=GMm/r²可知,向心力与r2成反比B、由F=mv& 判断:0/5的分子比分母小,所以它是真分数 一个假分数,分子比分母的5倍少2,如果分子、分母同时减去7,这个分数就没有意义.这个假分数是多少? 人造地球卫星的向心力计算2人造地球卫星质量比为1:2,到地心的距离是1:3,求向心力的比 最大的真分数分子比分母小1, 、一个假分数,分子比分母的5 倍少2,如果分子分母同时减去7,这个分数就没有意义,这个假分数是多、一个假分数,分子比分母的5倍少2,如果分子分母同时减去7,这个分数就没有意义,这个假分数 写出含马的成语, 判断题给好评 我想问下:谁知道一些素雅的词语或者成语的,不是普通的成语哦,1 人造地球卫星绕地球作匀速圆周运动,卫星离地面越高 则卫星的向心力____,线速度____ 一个假分数的分子比分母的3倍多2,化成带分数真分数部分的分母比分子多3.这个假分数是多少?快,会的人求帮助 牛顿的小故事有什么 30个含马的成语并解释意思 “苹果在空中下落得越来越快,是因为力是改变物体运动状态的原因.”这句话对吗?为什么?我理解不了 形容甘心做而不后悔的诗句 牛顿为什么那么厉害? 1.下面关于力学现象解释正确的是:A.小球在空中下落的越来越快,是因为力可以改变物体的运动状态B.人用力推车,车未动,是因为推力小于摩擦力C.小孩从电梯上自行滑下,是因为他受到惯性的 形容以前不珍惜东西,到了后面后悔的句子! 矛盾厉害还是牛顿厉害 将一个物体在空中抛出使它做曲线运动,若这个物体只受重力作用,为什么它的加速度大小和合力大小不变?匀速圆周运动属于曲线运动?它运动时加速度大小不变吗? 判断题 直升机飞行时只有平移运动么 为什么我没有牛顿那么厉害? 19.跳伞运动员在空中下落时,开伞前他的速度越来越快,开伞后他以不变的速度下降,则运动员所受力的变化 库仑力的限定条件其实是排除静电感应的干扰对吗?两个带电体之间能否发生静电感应,为什么,怎么发生的,对计算有什么影响吗'如果有'包括带电量的改变的影响吗 山亭夏日 古诗表达作者怎样的感情 小球在空中下落的越来越快,是因为力可以改变物体的运动对吗 在静电感应实验中,最终A带上-10的负8C(库仑)的电荷.在实验中,是电子由A转移到B还是由B转移到A?A、B得到或失去的电子数各是多少? 地球上不在赤道上的点的向心力怎么分析从结果看,向心力的指向与赤道平行,但是这个点不是受重力、支持力吗?这两个力所在直线穿过地心,那哪来的力提供斜着的向心力呢?万有引力不指向 关于物理库仑力一个带正电的点电荷Q,电子在库仑力的作用下沿顺时针做以Q为焦点的椭圆运动.请问形成的环形电流在O点的磁场方向垂直直面向里对么? 两个带正电荷的金属球靠近发生静电感应后会不会一端带负电荷一端显正电荷那么这样的话库仑力又怎么求了啊 舟过安仁古诗表达了作者怎样的情感
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘