关于很多教程中那个 网络连接API 出现的问题!,,奇怪啊!

show_20 2007-07-03 01:17:08
小弟一直以来,开发网络程序时,检测本机是否连接互联网,
一直是用一个很精典的,非常古老的,教程中的那段代码。。。(代码附后面)
检测结果非常准确。。。。。直到前几天重装系统,,还是和原来一样的XP2操作系统,却发现,,我没有连网,,,也提示连了网,,,奇怪了,,,


代码

unit Unit1;

interface

uses
Windows, Messages, SysUtils, wininet,Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
Types : Integer;
begin

Types := INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
if InternetGetConnectedState(@types, 0) then
showmessage('连上了');
else
showmessage('没连上');
end;

end.


奇怪了,,为什么我没有连网,也检查出来连了网啊????我开始还以为是病毒帮我连了网呢,结果用CMD > shutdown.exe -a 去查,,确实没有连,,,,
难道说,上面那段代码原来有用,现在没有用了吗???




在那个教程中,还有一个检查网络连接的例子,我也把源码放上来,(源码在下面)
用下面这个例子,也没有用,我断开网络,结果程序还是显示连了网!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if GetSystemMetrics(SM_NETWORK) and $0001 = $0001 then
showmessage('连上了')
else
showmessage('没连上');
end;

end.



为什么,,为什么,,,这是为什么,,我原来以为是XP的自动更新自动连了网,
我把自动更新关掉了,,也不能解决这个问题,,,你们也试一下啊,看看检查连网结果准不准啊!!!!!
...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
快活林 2007-07-04
  • 打赏
  • 举报
回复
我做过测试网线是否连接,用的是WMI
show_20 2007-07-04
  • 打赏
  • 举报
回复
唉,,,,,为什么我原来测试非常准确,,,就是前几天装过系统后,就发现没有用了,

我也找朋友试了,都说测试不出,,,没连也是连了,,,有没有谁跳出来,,指出这是为什么,我就是不明白,想搞明白,呵
show_20 2007-07-04
  • 打赏
  • 举报
回复
谁知道WMI如何用,把方法和源码贴出来好吗?
gyf 2007-07-03
  • 打赏
  • 举报
回复
测试了一下,果然跟楼主说的一样
以前没用过这个函数,也就不知道是否更改了,呵呵
brightyang 2007-07-03
  • 打赏
  • 举报
回复
我晕....
这也被你小子发现了
show_20 2007-07-03
  • 打赏
  • 举报
回复
我发现,要把本地链接关掉,,,检测结果是 “没有连网”

,,把本地链接打开,,,,网络连接断开后,,,检测结果是“连了网”

可是我原来用这个代码,,只要网络连接关掉了,就检测出来是“没连网”

是不是XP现在不支持这个API了,是不是XP的更新把这个API更改掉了,哈哈!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧