不知道怎样能检测到上网没!(20分)

  • 主题发起人 主题发起人 kasee
  • 开始时间 开始时间
K

kasee

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟正在做一个计网费的小程序遇到一些麻烦!
不知道怎样能检测到上网没!(拨号接入那一刻)是不是WINDOWS要发送一个消息,
同样怎样检测到断开连接,还有就是怎样能检测到光驱仓门的打开与关闭?
问题有点多,小弟是刚入会的菜鸟,没有什么分,还望各位不在乎的大侠指点一二,
小弟先谢谢了!
 
http://rainsoft.diy.163.com

RainXP 控件包中有一个检测网络连接的控件。
 
五种查询Internet连接状态[含IP]的方法
1.Powersock 控件法:
这种方法最简单,利用FastNet页的 Powersock控件的LocalIP属性即可判断:
if(Powersock1->LocalIP=="127.0.0.1"):在线
else:离线
特点:[1]判断连接状态,[2]获得本地IP。

2.使用URL.DLL的InetIsOffline(0) 函数:
Win2K:URL.DLL存放在/SYSTEM32/;
Win9x:URL.DLL存放在/SYSTEM/;
用GetSystemDirectory(...)得到系统目录。
InetIsOffline(0)返回值:
TRUE: 离线; FALSE:在线。
特点:判断连接状态。

3.WinSock编程法:见程序
特点:[1]判断连接状态;[2]获得本地IP和主机名。

4.WinInet.DLL的InternetGetConnectedState(&dwFlag,0)函数:
注意:为使用该函数,须在项目文件中加入:USELIB("WinInet.LIB")
特点:获得较详的连接描述!

5.RASAPI32.DLL的RasEnumConnections函数:
要使用该“枚举所有活动连接”函数,必须:
#include "ras.h"。

若连接数>0:本机当前已连入Internet;
否则: 本机当前未连入Internet;

 
哇好多方法呀实在多谢bianlx大侠!
不知道谁知道另外二个问题?
 
第一种方法不行
 
第一个方法不行。第二个问题可以搜索其它的贴子,以前有很多人问过的。
 
简单!用iedownload连接一个网站,不成功则没有上网。
 
多人接受答案了。
 
uses WinInet;

function GetNetStatus : Boolean;
var ConnectType : Integer;
begin
ConnectType := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
if (InternetGetConnectedState(@ConnectType, 0) = False) then
Result := False
else
Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if GetNetStatus then
ShowMessage('is Connected')
else ShowMessage('not Connected');
end;

end.
 
后退
顶部