关于很多教程中那个 网络连接API 出现的问题!,,奇怪啊!
小弟一直以来,开发网络程序时,检测本机是否连接互联网,
一直是用一个很精典的,非常古老的,教程中的那段代码。。。(代码附后面)
检测结果非常准确。。。。。直到前几天重装系统,,还是和原来一样的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的自动更新自动连了网,
我把自动更新关掉了,,也不能解决这个问题,,,你们也试一下啊,看看检查连网结果准不准啊!!!!!