在DELPHI程式中撥號上網 (轉)
在DELPHI程式中撥號上網 (轉)[@more@] 用MODEM撥號上網,仍是大多數個人網民選擇上網的方式.如果能在我們的應用中啟動撥號連線(如IE程式中的自動撥號功能),無疑將會方便我們的(不用再切換應用程式,執行撥號),提高我們的軟體的友好性從而提高軟體的競爭力.
在下,如果了撥號網路,則在的系統目錄System下將有兩個撥號程式庫Ras32.DLL和RasApi16.DLL,我們可利用其中的來建立、修改撥號連線,並利用指定的撥號連線進行撥號上網。
一、新建撥號連線
當WIN9X系統中已經建立了撥號連線,則可利用現成的撥號連線。如果沒有撥號連線,則需要新建一個撥號連線。RasAPI中提供了相應的函式,其函式名為RasCreatePhonebookEntryA,函式原型為:
function RasCreatePhonebookEntryA( hwnd : THandle;lpszPhonebook: pchar ) : D;
stdcall; { 位於interface部分 }
function RasCreatePhonebookEntryA ; external ’Rasapi32.dll’;{ 位於implementation部分 }
引數:
hwnd(THandle):新建撥號連線視窗的父視窗的控制程式碼,可以為TForm的Handle,為NIL表;Windows桌面(DeskTop)
lpszPhonebook(pchar):電話本名稱,在Win9X下無作用,可設為空字串
函式返回值:
0表示成功;否則為錯誤.
下面是一個新建撥號連線的例子.
{ 新建撥號連線 }
procedure TForm1.Button1Click(Sender: T);
var
dwResult : DWORD;
begin
//在當前視窗中新建撥號連線
dwResult := RasCreatePhonebookEntryA( handle, ’’ );
if dwResult = 0 then
memo1.lines.add(’新建撥號連線成功!’)
else
memo1.lines.add(’新建撥號連線失敗!’)
end;
二、修改指定撥號連線的屬性
如果使用者需要修改撥號連線的屬性如電話號碼、國家及區號、連線方式、型別等,可以用RasAPI函式來實現,其函式名為RasEditPhonebookEntryA,函式原型為:
function RasEditPhonebookEntryA( hwnd : THandle; lpszPhonebook: pchar;
lpszEntryName: pchar ) : DWORD;stdcall; { 位於interface部分 }
function RasEditPhonebookEntryA; external ’Rasapi32.dll’;{ 位於implementation部分 }
引數:
hwnd(THandle):新建撥號連線視窗的父視窗的控制程式碼,可以為TForm的Handle,為NIL表示
Windows桌面(DeskTop)
lpszPhonebook(pchar):電話本名稱,在Win9X下無作用,可設為空字串
lpszEntryName:( pchar):要修改的撥號連線的名稱,如’163’、’169’等
函式返回值:
0表示執行成功;否則為錯誤.
下面是一個修改指定撥號連線屬性的例子.
{ 修改指定撥號連線屬性 }
procedure TForm1.Button2Click(Sender: TObject);
var
dwResult : DWORD;
strDialName : string;
begin
strDialName := ’163’;//撥號連線的名稱設為163
//在當前視窗中指定修改撥號連線的屬性
dwResult := RasEditPhonebookEntryA( handle, ’’, PChar( strDialName ) );
if dwResult = 0 then
memo1.lines.add(’修改撥號連線’ + strDialName + ’成功!’)
else
memo1.lines.add(’修改撥號連線’ + strDialName + ’失敗!’)
end;
三、獲取當前系統中可用的撥號連線名稱
為了讓使用者選擇使用撥號連線進行撥號,我們需要獲取系統中已建立的撥號連線的名稱。在建立了撥號連線後,WIN9X將撥號連線的名稱和屬性寫在了登錄檔中,我們可以從登錄檔中獲取當前系統中可用的撥號連線名稱及在Inte Explorer中設定的預設連線名稱。
在登錄檔的HKEY_USERS.DefaultRemoteAccessAddresses下,列出了已經在撥號網路中建立了的撥號連線的名稱及其屬性設定,其中各專案的名稱即為可用的撥號連線的名稱;各專案的值即為各撥號連線的屬性設定.我們只要讀出各專案的名稱即可獲取當前系統中可用的撥號連線名稱.
如果在Internet Explorer中設定了預設連線名稱(檢視=》Internet選項=》連線=》連線=》設定=》使用以下撥號網路連線),則在登錄檔的HKEY_USERS.DefaultRemoteAccess下,有一個字串型別的鍵值,鍵值名InternetProfile,其值即為Internet Explorer中設定的預設連線名稱。
下面是一個獲取當前系統中可用的撥號連線名稱的例子.
{ 注意在Uses中增加Registry單元,用於操作登錄檔 }
{ 獲取當前系統中可用的撥號連線名稱 }
procedure TForm1.Button3Click(Sender: TObject);
var
registryTemp : TRegistry;
stringsTemp : TStringlist;
intIndex : integer;
begin
registryTemp := TRegistry.Create;
stringsTemp := TStringlist.Create;
with registryTemp do
begin
Key := HKEY_USERS;//根鍵設定為HKEY_USERS
//如果存在子鍵.DefaultRemoteAccessAddresses
if OpenKey(’.DefaultRemoteAccessAddresses’,false) then
GetValueNames( stringsTemp );//讀出各專案的名稱,即撥號連線名稱
CloseKey;
end;
//當前系統中可用的撥號連線
memo1.lines.add( ’******************當前系統中有’+ IntToStr( stringsTemp.count )
+’個可用的撥號連線如下****************’);
for intIndex := 0 to stringsTemp.count - 1 do
memo1.lines.add( stringsTemp.strings[ intIndex ] );
//列出Internet Explorer中設定的預設連線名稱
if registryTemp.OpenKey(’.DefaultRemoteAccess’,false) then
memo1.lines.add( ’Internet Explorer中設定的預設連線名稱為’ +
registryTemp.ReadString(’InternetProfile’) );
//釋放
registryTemp.free;
stringsTemp.free;
end;
四、用指定的撥號連線撥號
以上的三個工作的目的就是為了撥號上網,現在就來看看如果用指定的撥號連線撥號上網。最好的方法就是WIN9X的撥號網路服務了,就是執行WIN9X下的現成程式。
在程式中可以用如下程式碼實現撥號上網:
winexec(’rundll32.exe rnaui.dll,RnaDial 163’,SW_SHOWNORMAL);
其中字串中的最後一個引數“163”為撥號連線的名稱。
下面是一個用指定的撥號連線撥號上網的例子.
{ 用指定的撥號連線撥號上網 }
procedure TForm1.Button4Click(Sender: TObject);
var
strDialName : string;
begin
strDialName := ’163’;//撥號連線的名稱設為163
memo1.lines.add( ’******************用撥號連線’+ strDialName
+’實現撥號上網****************’);
winexec( PChar(’rundll32.exe rnaui.dll,RnaDial ’ + strDialName),SW_SHOWNORMAL);
end;
以上程式在P+Delphi3.0下透過。
在下,如果了撥號網路,則在的系統目錄System下將有兩個撥號程式庫Ras32.DLL和RasApi16.DLL,我們可利用其中的來建立、修改撥號連線,並利用指定的撥號連線進行撥號上網。
一、新建撥號連線
當WIN9X系統中已經建立了撥號連線,則可利用現成的撥號連線。如果沒有撥號連線,則需要新建一個撥號連線。RasAPI中提供了相應的函式,其函式名為RasCreatePhonebookEntryA,函式原型為:
function RasCreatePhonebookEntryA( hwnd : THandle;lpszPhonebook: pchar ) : D;
stdcall; { 位於interface部分 }
function RasCreatePhonebookEntryA ; external ’Rasapi32.dll’;{ 位於implementation部分 }
引數:
hwnd(THandle):新建撥號連線視窗的父視窗的控制程式碼,可以為TForm的Handle,為NIL表;Windows桌面(DeskTop)
lpszPhonebook(pchar):電話本名稱,在Win9X下無作用,可設為空字串
函式返回值:
0表示成功;否則為錯誤.
下面是一個新建撥號連線的例子.
{ 新建撥號連線 }
procedure TForm1.Button1Click(Sender: T);
var
dwResult : DWORD;
begin
//在當前視窗中新建撥號連線
dwResult := RasCreatePhonebookEntryA( handle, ’’ );
if dwResult = 0 then
memo1.lines.add(’新建撥號連線成功!’)
else
memo1.lines.add(’新建撥號連線失敗!’)
end;
二、修改指定撥號連線的屬性
如果使用者需要修改撥號連線的屬性如電話號碼、國家及區號、連線方式、型別等,可以用RasAPI函式來實現,其函式名為RasEditPhonebookEntryA,函式原型為:
function RasEditPhonebookEntryA( hwnd : THandle; lpszPhonebook: pchar;
lpszEntryName: pchar ) : DWORD;stdcall; { 位於interface部分 }
function RasEditPhonebookEntryA; external ’Rasapi32.dll’;{ 位於implementation部分 }
引數:
hwnd(THandle):新建撥號連線視窗的父視窗的控制程式碼,可以為TForm的Handle,為NIL表示
Windows桌面(DeskTop)
lpszPhonebook(pchar):電話本名稱,在Win9X下無作用,可設為空字串
lpszEntryName:( pchar):要修改的撥號連線的名稱,如’163’、’169’等
函式返回值:
0表示執行成功;否則為錯誤.
下面是一個修改指定撥號連線屬性的例子.
{ 修改指定撥號連線屬性 }
procedure TForm1.Button2Click(Sender: TObject);
var
dwResult : DWORD;
strDialName : string;
begin
strDialName := ’163’;//撥號連線的名稱設為163
//在當前視窗中指定修改撥號連線的屬性
dwResult := RasEditPhonebookEntryA( handle, ’’, PChar( strDialName ) );
if dwResult = 0 then
memo1.lines.add(’修改撥號連線’ + strDialName + ’成功!’)
else
memo1.lines.add(’修改撥號連線’ + strDialName + ’失敗!’)
end;
三、獲取當前系統中可用的撥號連線名稱
為了讓使用者選擇使用撥號連線進行撥號,我們需要獲取系統中已建立的撥號連線的名稱。在建立了撥號連線後,WIN9X將撥號連線的名稱和屬性寫在了登錄檔中,我們可以從登錄檔中獲取當前系統中可用的撥號連線名稱及在Inte Explorer中設定的預設連線名稱。
在登錄檔的HKEY_USERS.DefaultRemoteAccessAddresses下,列出了已經在撥號網路中建立了的撥號連線的名稱及其屬性設定,其中各專案的名稱即為可用的撥號連線的名稱;各專案的值即為各撥號連線的屬性設定.我們只要讀出各專案的名稱即可獲取當前系統中可用的撥號連線名稱.
如果在Internet Explorer中設定了預設連線名稱(檢視=》Internet選項=》連線=》連線=》設定=》使用以下撥號網路連線),則在登錄檔的HKEY_USERS.DefaultRemoteAccess下,有一個字串型別的鍵值,鍵值名InternetProfile,其值即為Internet Explorer中設定的預設連線名稱。
下面是一個獲取當前系統中可用的撥號連線名稱的例子.
{ 注意在Uses中增加Registry單元,用於操作登錄檔 }
{ 獲取當前系統中可用的撥號連線名稱 }
procedure TForm1.Button3Click(Sender: TObject);
var
registryTemp : TRegistry;
stringsTemp : TStringlist;
intIndex : integer;
begin
registryTemp := TRegistry.Create;
stringsTemp := TStringlist.Create;
with registryTemp do
begin
Key := HKEY_USERS;//根鍵設定為HKEY_USERS
//如果存在子鍵.DefaultRemoteAccessAddresses
if OpenKey(’.DefaultRemoteAccessAddresses’,false) then
GetValueNames( stringsTemp );//讀出各專案的名稱,即撥號連線名稱
CloseKey;
end;
//當前系統中可用的撥號連線
memo1.lines.add( ’******************當前系統中有’+ IntToStr( stringsTemp.count )
+’個可用的撥號連線如下****************’);
for intIndex := 0 to stringsTemp.count - 1 do
memo1.lines.add( stringsTemp.strings[ intIndex ] );
//列出Internet Explorer中設定的預設連線名稱
if registryTemp.OpenKey(’.DefaultRemoteAccess’,false) then
memo1.lines.add( ’Internet Explorer中設定的預設連線名稱為’ +
registryTemp.ReadString(’InternetProfile’) );
//釋放
registryTemp.free;
stringsTemp.free;
end;
四、用指定的撥號連線撥號
以上的三個工作的目的就是為了撥號上網,現在就來看看如果用指定的撥號連線撥號上網。最好的方法就是WIN9X的撥號網路服務了,就是執行WIN9X下的現成程式。
在程式中可以用如下程式碼實現撥號上網:
winexec(’rundll32.exe rnaui.dll,RnaDial 163’,SW_SHOWNORMAL);
其中字串中的最後一個引數“163”為撥號連線的名稱。
下面是一個用指定的撥號連線撥號上網的例子.
{ 用指定的撥號連線撥號上網 }
procedure TForm1.Button4Click(Sender: TObject);
var
strDialName : string;
begin
strDialName := ’163’;//撥號連線的名稱設為163
memo1.lines.add( ’******************用撥號連線’+ strDialName
+’實現撥號上網****************’);
winexec( PChar(’rundll32.exe rnaui.dll,RnaDial ’ + strDialName),SW_SHOWNORMAL);
end;
以上程式在P+Delphi3.0下透過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988335/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- win10撥號上網如何設定_win10設定撥號上網的步驟Win10
- Linux系統下使用pppd撥號上網Linux
- 電腦開機自動撥號上網怎麼設定?電腦自動撥號上網的設定方法步驟
- win10開機怎麼自動撥號_win10怎麼自動撥號上網Win10
- linux gprs模組 sim800a 晶片 ppp撥號上網Linux晶片
- 從Delphi到Lazarus——Delphi轉換器
- 為什麼在容器中 1 號程式掛不上 arthas?
- 在Delphi中使用正規表示式校驗身份證號
- win10系統下怎麼進行寬頻撥號上網Win10
- delphi 隱藏磁碟機代號
- 在ARM+LINUX上使用pppd拔號上網(GPRS)流程Linux
- 撥號vps,遠端連線撥號vps的方法及其步驟
- 【轉】cmd中%號和雙引號轉義
- 在CMakeLists.txt中設定版本號,並在程式碼中呼叫
- zsh 命令在 alias 中如何轉義 ' 字元(單引號)字元
- 什麼是撥號vps
- HTML input tel 撥號域HTML
- ADSL 撥號代理的搭建
- 撥號VPS中691的可能原因及解決方法?
- delphi cxgrid匯出excel去除貨幣符號Excel符號
- 頓號在鍵盤上怎麼打 頓號符號在鍵盤上怎麼打不出來符號
- openwrt 撥號失敗問題
- Vps撥號伺服器,Vps撥號伺服器的優點及其連線方法伺服器
- 我中國移動手機號轉網中國電信分享
- 在c中,怎麼註冊回撥函式函式
- 混撥vps與單城市撥號vps有什麼區別?
- win10怎麼撥號上網651 win10寬頻連線錯誤651解決方法Win10
- Delphi在dbgrideh中新增Img顯示blobIDE
- ubuntu18.04進行pppoe撥號Ubuntu
- Linux下pppd撥號指令碼配置Linux指令碼
- 在網頁上調起本機C#程式網頁C#
- delphi:string,PChar,Array of Char 之間的轉換
- safair瀏覽器 在回撥中跳轉 window.open 打不開頁面 但是有判斷,跳轉不了AI瀏覽器
- Linux 使用pppd和ppp程式進行3G/4G撥號Linux
- 轉:在Linux上執行WinFormLinuxORM
- 什麼是撥號vps伺服器伺服器
- 如何連線vps撥號伺服器伺服器
- 如何選擇撥號VPS伺服器!伺服器
- FreeSWITCH測試撥號規則例項