用BCB編程完成掛斷撥號網絡技巧
發表時間:2024-06-20 來源:明輝站整理相關軟件相關文章人氣:
[摘要]河北 張利輝 有一次在用BCB開發程序的過程時,客戶要求實現在結束Internet事務(傳輸文件等)后自動掛斷撥號網絡的功能,以提高軟件的自動化程度。首先想到的方法是使用Windows API實現該功能,但是查遍WIN32 API并沒有發現相應的函數。在查閱資料之后終于找到了一種解決的方法,為了...
河北 張利輝
有一次在用BCB開發程序的過程時,客戶要求實現在結束Internet事務(傳輸文件等)后自動掛斷撥號網絡的功能,以提高軟件的自動化程度。首先想到的方法是使用Windows API實現該功能,但是查遍WIN32 API并沒有發現相應的函數。在查閱資料之后終于找到了一種解決的方法,為了給同行以幫助,特將此方法介紹給大家。
我是使用RAS API來完成這個功能的。使用它需要三個條件:1.計算機中應當安裝好撥號網絡,此時的Window\system目錄下將會存在動態鏈接庫RasApi32.dll,這是實現本功能的前提條件;2.源程序中應當有預編譯指令#include ″ras.h″;3.存在庫文件RasApi32.lib。
我的方法中用到了RAS API中提供的兩個函數RasHangUp()和RasEnumConnections(),它們的原型和功能如下:
DWORD RasHangUp(HRASCONN hrasconn),此函數的功能是關閉撥號網絡,返回值是0時表示調用成功。它的參數是RAS句柄,該句柄的獲得可以通過下面的函數。
DWORD RasEnumConnections(LPRASCONN lprasconn, LPDWORD lpcb, LPDWORD lpcConnections),這個函數可以獲得所有連接的數據。它的三個參數都是指針,第一個指向存放連接數據的緩沖區,該緩沖區由RASCONN結構數組組成。RASCONN結構的成員hrasconn保存了RasHangUp()所需的RAS句柄;第二個參數指向存放緩沖器字節數的變量;第三個參數指向的變量存放了連接的數目。當函數返回值是0時表示調用成功。
實現掛斷撥號網絡功能的函數如下:
bool CloseRas()
{bool bReturn= false;
RASCONN ras[20];
DWORD dSize, dNumber, dCount;
//函數RasEnumConnections()的要求
ras[0].dwSize=sizeof(RASCONN);
dSize =sizeof(ras);
if (RasEnumConnections(ras, &dSize, &dNumber)==0)
{bReturn=true;
//依次關閉所有的連接
for (dCount=0; dCount<dNumber; dCount++ )
{if (RasHangUp(ras[dCount].hrasconn)!=0)
{bReturn=false;
break;
}}}
return bReturn;
}
將它加入到程序中適當的位置就可以實現自動掛斷撥號網絡的功能了,本函數在Windows 98、Borland C++ Builder 5.0中運行成功。