200分,一个老问题(200分)

  • 主题发起人 主题发起人 qixia
  • 开始时间 开始时间
Q

qixia

Unregistered / Unconfirmed
GUEST, unregistred user!
一个在论坛上讨论过多次。但我要一个完美的解决方案。
问题是:如何判断机器是否连上网了。要考虑到以下因素:
1.在局网与在拨号上网的机子上都可运行。
2.在局网的机子上判断何时可连上局网外的网站。
3.在拨号上网的机子上不会跳出自动连接的窗口。
需要具体代码。
 
1,2都有答案!
3 暂时无解,就如同要IE下载提示框不出现一样不行。除非改写MICROSOFT在DLL中的代码。
 
那就先讲1,2的答案吧!
 
<a href=http://www.wapsec.com.cn/delphi/viewdownload.asp?type=kongjian&amp;id=70>请点击此处下载你所需要的东西</a>
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if findcomputer(edit1.text) then
showmessage(edit1.text+'在网上')
else
showmessage(edit1.text+'不在网上');
end;

function TForm1.Findcomputer(Computername:string):boolean;
var wsadata:twsadata;
hostent:phostent;
begin
result:=true;
wsastartup(2,wsadata);
hostent:=gethostbyname(pchar(computername));
if hostent=nil then result:=false;
wsacleanup;
end;
要用到winsock单元
 
1,2》可以直接用ICS的HTTPCHECK程序代码来检测能否打开某个网页来判断。
3》直接用函数修改注册表的AUTOCONNET就可以了
 
function InternetGetConnectedState(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL;
stdcall; external 'wininet.dll' name 'InternetGetConnectedState';


 
to: terry_lzs
你方法我试过了,在拨号上网的机子未上网时会弹出自动拨号的窗口
 
提问者:
如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明

http://www.delphibbs.com/delphibbs/rules.asp
 
多人接受答案了。
 
后退
顶部