1. Powersock 控件法:
这种方法最简单, 利用 FastNet 页的 Powersock 控件的 LocalIP 属性即可判断: if(Powersock1->LocalIP==\:在线
else :离线 特点: [1] 判断连接状态, [2] 获得本地 IP。 2. 使用 URL.DLL的 InetlsOffline(0) 函数: Win2K URL.DLL存放在 ; Win9x: URL.DLL存放在 ;
用 GetSystemDirectory(...) 得到系统目录。 InetIsOffline(0) 返回值: TRUE 离线;FALSE:在线。 特点:判断连接状态。
3. WinSock 编程法:见程序
特点: [1] 判断连接状态; [2] 获得本地 IP 和主机名。
4. WinInet.DLL 的 InternetGetConnectedState(&dwFlag,0) 函数: 注意:为使用该函数,须在项目文件中加入: USELIB(\特点:获得较详的连接描述! 5. RASAPI32.DLL的 RasEnumConnections函数: 要使用该“枚举所有活动连接”函数,必须:
#include \。
若连接数 >0:本机当前已连入 Internet ; 否则: 本机当前未连入 Internet ; 源码如下,在[BCB5 + WIN2K +拨号上网]下通过(N字头的为菜单项): Powersock 控件法 ---
void __fastcall TForm1::N11Click(TObject *Sender) if(Powersock1->LocalIP==\
ShowMessage(味连接:\
else ShowMessage(\已连接: \
{ }
-------- URL.DLL 的 InetIsOffline 函数法 ----------------------- HINSTANCE hDLL;
typedef bool __stdcall(*FUN)(int); 定义 DLL函数指针 FUN FUN isOffLine;
void __fastcall TForm1::N21Click(TObject *Sender)
{
char Buffer[MAX_PATH];
GetSystemDirectory(Buffer,MAX_PATH);
hDLL=LoadLibrary((AnsiString(Buffer)+\
if(hDLL==NULL){ ShowMessage(\isOffLine=(FUN)GetProcAddress(hDLL,\
if(isOffLine==NULL){ ShowMessage(\return; }
if(!isOffLine(0)) ShowMessage(\已连接 \else ShowMessage(\未连接 \FreeLibrary(hDLL);
}
------- WinSock 法 ----------------------------------- void __fastcall TForm1::N31Click(TObject *Sender)
{
WORD wVersionRequested;
WSADATA wsaData; wVersionRequested=MAKEWORD(1,1); Start up WinSock WSAStartup(wVersionRequested,&wsaData);
hostent *p; char *p2; char s[128]; gethostname(s,128); Get the computer name p=gethostbyname(s);
p2=inet_ntoa(*((in_addr *)p->h_addr)); Get the IpAddress AnsiString LocationIP=p2; if(LocationIP==\ShowMessage(味连接:\
else ShowMessage(\已连接: \WSACleanup();
}
------- WinInet.DLL 的 InternetGetConnectedState 函数法 --------------- void __fastcall TForm1::N41Click(TObject *Sender)
{
StaticText1->Caption=\n=\
StaticText4->Caption=\n=\
StaticText7->Caption=\DWORD dwFlag;
InternetGetConnectedState(&dwFlag,0);
if(dwFlag & INTERNET_CONNECTION_MODEM) StaticText1->Caption=\DEMS 接
else StaticText1->Caption=\
if(dwFlag & INTERNET_CONNECTION_LAN) StaticText2->Caption=\连接 else StaticText2->Caption=\
if(dwFlag & INTERNET_CONNECTION_PROXY) StaticText3->Caption=\代 理连接 else StaticText3->Caption=\
----- 检查是否连接 ------------------------------
if(InternetGetConnectedState(NULL,0)) StaticText4->Caption=\在 线 else StaticText4->Caption=\
if(dwFlag & INTERNET_CONNECTION_OFFLINE) StaticText5->Caption=\离线。
注:不好用!
else StaticText5->Caption=\
if(dwFlag & INTERNET_RAS_INSTALLED) StaticText6->Caption=\else StaticText6->Caption=\
if(dwFlag & INTERNET_CONNECTION_CONFIGURED) StaticText7->Caption=\J
else StaticText7->Caption=\
}
----- RASAPI32.DLL 的 RasEnumConnections函数法 -------------------- #include \
void __fastcall TForm1::N51Click(TObject *Sender)
{
RASCONN RASco nn[256]活动连接数组 DWORD BuffSize; 数组所占内存大小;
DWORD ConnNu活动连接数目
RASconn[0].dwSize=sizeof(RASCONN); 必须指定一个连接 [数组元素 ]的内存大 小; BuffSize=sizeof(RASCONN)*256;
DWORD dwReturn=RasEnumConnections(RASconn,&BuffSize,&ConnNum); if(dwReturn==0)
{
if(ConnNum>0) ShowMessage(” 已连接。当前激活连接数:\else ShowMessage(\未连接。当前激活连接数: \
}
else ShowMessage(\函数失败! \
}