日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

用Delphi即时判断当前的网络的连接方式

發(fā)布時(shí)間:2023/12/13 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 用Delphi即时判断当前的网络的连接方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

判斷網(wǎng)絡(luò)的是否連接或者連接方式,比較重要的一點(diǎn)就是是不是即時(shí)判斷,如果你明明無連接,判斷出來卻說你有,連接上了,卻說你還未連接,下面要介紹的兩個(gè)方法中 InternetGetConnectedState就是不怎么夠即時(shí)的API函數(shù),而第二個(gè)使用的是IsNetworkAlive這個(gè)API函數(shù),這個(gè)沒有InternetGetConnectedState的那種問題,但是可能需要安裝SDK,也就是.Net框架。

一、InternetGetConnectedState

在DELPHI中 引用wininet這個(gè)單元就可以直接使用 InternetGetConnectedState函數(shù)了,下面給出一個(gè)判斷當(dāng)前網(wǎng)絡(luò)連接狀態(tài)的函數(shù),在注釋中會一一解釋它的一些相關(guān)返回值的含義。

uses wininet; //這個(gè)已經(jīng)說了 必須引用它才可以使用InternetGetConnectedState函數(shù)

function ConnectionKind :boolean;
var flags: dword;
begin
Result := InternetGetConnectedState(@flags, 0);
if Result then
begin
if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then showmessage('在線:撥號上網(wǎng)');
if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then showmessage('在線:通過局域網(wǎng)');
if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then showmessage('在線:代理');
if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then showmessage('MODEM被其他非INTERNET連接占用');
end; //if
end; //function

過程結(jié)束 下面說下各各返回值的意思:
INTERNET_CONNECTION_MODEM: //現(xiàn)在是通過撥號方式上網(wǎng)的
INTERNET_CONNECTION_LAN: //現(xiàn)在是通過局域網(wǎng)上網(wǎng)的
INTERNET_CONNECTION_PROXY: //現(xiàn)在是通過代理上網(wǎng)的
INTERNET_CONNECTION_MODEM_BUSY: //現(xiàn)在MODEM被其他非INTERNET連接占用(離線)

以上就是通過使用InternetGetConnectedState函數(shù)實(shí)現(xiàn)的判斷網(wǎng)絡(luò)狀態(tài)的方法

--------------------------------------------------------------------------------

二、IsNetworkAlive

Delphi中沒有對這個(gè)函數(shù)進(jìn)行聲明,所以我們要自己聲明,請把下面的代碼加入到當(dāng)前窗體或者單元的 聲明全局變量的地方 也就是第一個(gè)var下面。

Function IsNetworkAlive(var lpdwFlagsLib:Integer):Integer;stdcall;external'SENSAPI.DLL';

還有要定義三個(gè)常量:

Const NETWORK_ALIVE_LAN = 1; //通過局域網(wǎng)上網(wǎng)
Const NETWORK_ALIVE_WAN = 2; //通過廣域網(wǎng)上網(wǎng)
Const NETWORK_ALIVE_AOL = 4; //僅對9895有效判斷是否聯(lián)上美國網(wǎng)絡(luò)

下面還是給出一個(gè)過程來判斷當(dāng)前網(wǎng)絡(luò)的狀態(tài),這次是一個(gè)過程

procedure ShowNetWorkState();
var
falg:integer;
Bos:boolean;
begin
Bos:=false;
IsNetworkAlive(falg);
case falg of
NETWORK_ALIVE_LAN:
begin
Showmessage('通過局域網(wǎng)上網(wǎng)。');
Bos:=true;
end;
NETWORK_ALIVE_WAN:
begin
Showmessage('通過廣域網(wǎng)上網(wǎng)。');
Bos:=true;
end;
NETWORK_ALIVE_AOL:
begin
Showmessage('聯(lián)上美國的網(wǎng)絡(luò)。'); //僅對9895有效所以一般不用判斷NETWORK_ALIVE_AOL
Bos:=true;
end;
else Showmessage('沒有聯(lián)網(wǎng)。');
end; //case
if Bos then Showmessage('你現(xiàn)在是聯(lián)網(wǎng)狀態(tài)!')
else Showmessage('你現(xiàn)在是離線狀態(tài)!');
end;

這個(gè)我就不多做解釋了,上面的這兩個(gè)方法是可以用來判斷網(wǎng)絡(luò)連接的方式,也可以用來判斷網(wǎng)絡(luò)是否連通。

--------------------------------------------------------------------------------

下面再介紹一個(gè)方法可以判斷網(wǎng)絡(luò)是否連通的。

三、URL.DLL中的InetIsOffline函數(shù)。

Delphi中沒有對該函數(shù)進(jìn)行聲明,所以我們要自己聲明,這跟上面的第二種方法的聲明是同個(gè)道理
函數(shù)申明為:
function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';

然后就可以調(diào)用函數(shù)判斷系統(tǒng)是否連接到INTERNET

if InetIsOffline(0) then ShowMessage('沒有連接到網(wǎng)絡(luò)')
else ShowMessage('已經(jīng)連接到網(wǎng)絡(luò)');

該函數(shù)返回TRUE說明本地系統(tǒng)沒有連接到INTERNET。
附:
大多數(shù)裝有IE或OFFICE97的系統(tǒng)都有此DLL可供調(diào)用。
InetIsOffline
BOOL InetIsOffline(
DWORD dwFlags,
);

http://blog.csdn.net/chinazhd/article/details/45060081

總結(jié)

以上是生活随笔為你收集整理的用Delphi即时判断当前的网络的连接方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。