高手请进:关于win api : internetcheckconnection (100分)

  • 主题发起人 主题发起人 永不言败
  • 开始时间 开始时间

永不言败

Unregistered / Unconfirmed
GUEST, unregistred user!
关于win api : internetcheckconnection ,下面的代码在98和2000运行的结果不同:

uses wininet;
.......
showmessage('0');
try
InternetCheckConnection(pchar(saddr),1, 0);
showmessage('1');
except
showmessage('2');
end;
98下的结果是 0 2 产生异常
2000下的结果是 0 1 不产生异常

请问如何在98下也不产生异常!!
 
folmorse (2001-1-2 14:41:48)
如果说我的程序由问题,我愿意把源代码附上,请大虾指点!
uses
....,winInet,...NMFTP...
procedure fm_upload.bt_uploadclick(Sender:Tobject);
begin
if Not InternetCheckConnection(Pchar('http://'+test_url), 1, 0) then
begin
ShowMessage('请检查一下你的机器是否连上internet');
exit;
end;
//连接FTP服务器
NMFTP1.Host:=host_url;
NMFTP1.Port:=21;
NMFTP1.UserID:='xxx';
NMFTP1.Password:='xxx';
NMFTP1.Connect;
finally
//on E:Exception do
// ShowMessage('请你确定你的网络是否连到Internet?');
//重新恢复最初设置
NMFTP1.Disconnect;
SetCurrentdir(Pub_Currentdir);
Screen.Cursor:=crDefault;
end;

end;

教父 (2001-1-2 15:50:49)
问题肯定是出在InternetCheckConnection这个函数上面,我查了一下wininet.dll,里面
并没有InternetCheckConnection这个函数,只有InternetCheckConnectionA和
InternetCheckConnectionW这两个函数,98和NT4都是这样的,我没有2000,不知道2000底
下是怎么样,你自已看看。

folmorse (2001-1-6 9:47:45)
请教父说说还有什么方法实现判断是否连上Internet,我已经试过了好几个方法,
你说的InternetCheckConnectionA和InternetCheckConnectionW,我在winNT4.0
上调试没成功。请问还有别的方法吗?还有如何察看WinInet里面有什么函数?
请指点!

mikedeakins (2001-1-6 11:05:02)
使用 InternetCheckConnectionA ,要求 IE 3.0 或更高版本。
PChar 属于 Ansi 字符串。

教父 (2001-1-6 12:50:33)
据说可以通过注册表来判断
HKEY_LOCAL_MACHIE/System/CurrentControlSet/Servies/RemoteAcces分支下,当计算机未连
通时,Remote Connection的键值为00 00 00 00,连通时,为01 00 00 00。
在书上看到的,没试过。 :)
要看到WinInet里面有什么函数的话,你可以右击相应的DLL,在选快速查看就可以了

 
应该没问题!如果出现异常,你查看一下你的机器上有没有 wininet.dll这个文件

const
winetdll = 'wininet.dll';

function InternetCheckConnectionA; external winetdll name 'InternetCheckConnectionA';
function InternetCheckConnectionW; external winetdll name 'InternetCheckConnectionW';
function InternetCheckConnection; external winetdll name 'InternetCheckConnectionA';



procedure TForm1.Button1Click(Sender: TObject);
const FLAG_ICC_FORCE_CONNECTION=$00000001;
var
saddr:string;
b:LongBool;
begin
// saddr:='http://10.32.103.100/'; //局域网地址,Ok
saddr:='http://www.china.com/'; //通过代理会无法连接的
b:=InternetCheckConnection(pchar(saddr),FLAG_ICC_FORCE_CONNECTION , 0);
if (b) then showmessage(saddr+' Ok!')
else showmessage('Error:'+sysErrorMessage(GetLastError));

end;
 
jsxjd:

我在两台98机器上都试过: Internetcheckconnection

都出现异常:Access violation address BFF7BA62 in module 'KERNEL.DLL read of address FFFFFFFF

我查过2000下 wininet 的版本是:5.0.2920.0
98下的版本是 5.00.2614.3500

 
问题解决,发分庆祝,参与的人人有份:

ics 控件很牛B

 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部