全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1299
推到 Plurk!
推到 Facebook!

安靜的做ADSL or RAS 網路連線測試(免用網址測試方式)

 
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-28 20:13:07 IP:61.216.xxx.xxx 未訂閱
unit Unit1;    interface    uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs   ,Registry, StdCtrls; const cERROR_BUFFER_TOO_SMALL = 603; cRAS_MaxEntryName = 256; cRAS_MaxDeviceName = 128; cRAS_MaxDeviceType = 16; type TConnectionType = (ctNone, ctProxy, ctDialup); type ERasError = class(Exception); HRASConn = DWord; PRASConn = ^TRASConn; TRASConn = record dwSize: DWORD; rasConn: HRASConn; szEntryName: Array[0..cRAS_MaxEntryName] Of Char; szDeviceType : Array[0..cRAS_MaxDeviceType] Of Char; szDeviceName : Array [0..cRAS_MaxDeviceName] of char; end; TRasEnumConnections = function (RASConn: PrasConn; var BufSize: DWord; var Connections: DWord): LongInt;stdcall; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; function ConnectedToInternet : TConnectionType; function RasConnectionCount : Integer; implementation {$R *.DFM} function ConnectedToInternet: TConnectionType; var Reg : TRegistry; bUseProxy : Boolean; UseProxy : LongWord; begin Result := ctNone; Reg := TRegistry.Create; with REG do try try RootKey := HKEY_CURRENT_USER; if OpenKey('Software\Microsoft\WindowsCurrentVersion\Internet settings',False) then begin if GetDataType('ProxyEnable') = rdBinary then ReadBinaryData('ProxyEnable', UseProxy, SizeOf(LongWord) ) else begin bUseProxy := ReadBool('ProxyEnable'); if bUseProxy then UseProxy := 1 else UseProxy := 0; end; end; except end; finally Free; end; if Result = ctNone then begin if RasConnectionCount > 0 then Result := ctDialup; end; end; function RasConnectionCount : Integer;var RasDLL : HInst; Conns : Array[1..4] of TRasConn; RasEnums : TRasEnumConnections; BufSize : DWord; NumConns : DWord; RasResult : Longint; begin Result := 0; RasDLL := LoadLibrary('rasapi32.dll'); if RasDLL = 0 then exit; try RasEnums := GetProcAddress(RasDLL,'RasEnumConnectionsA'); if @RasEnums = nil then raise ERasError.Create('RasEnumConnectionsA not found in rasapi32.dll'); Conns[1].dwSize := Sizeof (Conns[1]); BufSize := SizeOf(Conns); RasResult := RasEnums(@Conns, BufSize, NumConns); If (RasResult = 0) or (Result = cERROR_BUFFER_TOO_SMALL) then Result := NumConns; finally FreeLibrary(RasDLL); end; end; procedure TForm1.Button1Click(Sender: TObject); var Status : TConnectionType; begin Status:=ConnectedToInternet; if Status=ctDialup then label1.caption:='連線中'; if Status=ctNone then label1.caption:='未連線'; end; end. 因為你!再大的難題,更顯得容易!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-28 20:39:56 IP:218.16.xxx.xxx 未訂閱
在 LAN 經 Router 連上網可以用這個嗎? 我的都說 未連線 >_<
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-28 20:57:03 IP:61.216.xxx.xxx 未訂閱
另一個例子:(請試試看)    USES   WinInet;   ..   ..    function InternetConnected: Boolean; CONST   INTERNET_CONNECTION_MODEM      = 1; // local system uses a modem to connect to the Internet.   INTERNET_CONNECTION_LAN        = 2; // local system uses a local area network to connect to the Internet.   INTERNET_CONNECTION_PROXY      = 4; // local system uses a proxy server to connect to the Internet.   INTERNET_CONNECTION_MODEM_BUSY = 8; // local system's modem is busy with a non-Internet connection. VAR     dwConnectionTypes : DWORD; BEGIN   dwConnectionTypes :=            INTERNET_CONNECTION_MODEM +          INTERNET_CONNECTION_LAN +          INTERNET_CONNECTION_PROXY;   Result := InternetGetConnectedState(@dwConnectionTypes,0); END;        因為你!再大的難題,更顯得容易!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-28 22:26:31 IP:218.16.xxx.xxx 未訂閱
測試結果如下 : 本機->Hubs->Router->Internet : 連線中    拔掉 Hubs->Router 的接線 (本機->Hubs) : 連線中    拔掉 本機->Hubs 的接線 (單本機): 連線中    重新開機 (單本機) : 未連線    插入 本機->Hubs 的接線 (本機->Hubs) : 未連線    幾秒後再試 (本機->Hubs) : 程式死掉    重新開機  (本機->Hubs) : 連線中    插入 Hubs->Router 的接線 (本機->Hubs->Router->Internet) : 連線中    結果不大穩定而且連到 Hubs 沒連 Internet 也顯示 連線中    其實我以前花了不少時間在網上找免網址測 internet connection 的方法,但是所有人都說是不可能完善的,因為電網只能辦認你有接上 TCP/IP 網路但不能分辦這只是一個私人的網路還是有轉接地接上 internet ,除非用一個你確定在 internet 彼方的網址來測試。    對於在家使用單機的人來說,接上了 TCP/IP 網路就等於接上了 internet 所以可以用這類方式。    很多人說不可能不一定就是不可能,所以我還是努力的測試你的作品,希望你能化不可能為可能
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-28 22:32:14 IP:61.216.xxx.xxx 未訂閱
Justmade 大大 我在努力中!    因為你!再大的難題,更顯得容易!
系統時間:2024-05-04 14:27:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!