|
在Visual FoxPro 中實(shí)現(xiàn)撥號上網(wǎng)功能,難點(diǎn)在于如何調(diào)用相應(yīng)的WINDOWS API函數(shù)。與撥號網(wǎng)絡(luò)相關(guān)的幾個API函數(shù)需要復(fù)雜的結(jié)構(gòu)類型的參數(shù),在VFP幫助文件“程序員指南—訪問API”中有相關(guān)說明,但較為簡單,不足以解決問題,在此作進(jìn)一步探討。希望通過本文能解決實(shí)現(xiàn)撥號上網(wǎng)的實(shí)際問題,更希望通過這個例子幫助了解如何在VFP環(huán)境下調(diào)用參數(shù)復(fù)雜的API函數(shù),以擴(kuò)展VFP的應(yīng)用。
因篇幅所限,本文僅論述關(guān)鍵部分,相關(guān)細(xì)節(jié)說明請參閱參考文件。 WINDOWS API中RasDial函數(shù)可實(shí)現(xiàn)撥號上網(wǎng)功能,可在MSDN幫助中查到,其參數(shù)簡述如下:
其中結(jié)構(gòu)RASDIALPARAMS描述如下:
以上RAS_MaxEntryName等預(yù)定義值,可從RAS.H與LMCONS.H中查出。難點(diǎn)在于dwSize值的確定:將結(jié)構(gòu)中各變量字節(jié)長度累加應(yīng)為1049字節(jié),但將1049代入dwSize去調(diào)用RasDial函數(shù)卻返回錯誤。啟動VC++6.0定義了一個RASDIALPARAMS型結(jié)構(gòu)變量后,發(fā)現(xiàn)其長度為1052字節(jié),即最接近1049且能被4(DWORD所占字節(jié)數(shù))整除的值。 分析至此,函數(shù)RasDial的各項(xiàng)參數(shù)已清楚,VFP中調(diào)用程序如下:
*!* 先注冊函數(shù)
斷線的程序如下:
注意以下幾點(diǎn): * 指針參數(shù)(p或lp開頭)通常按引用傳遞。NULL指針為特殊情況,其值為0,在VFP中對應(yīng)值為0的INTEGER類型變量。句柄參數(shù)(H開頭)對應(yīng)INTERGER變量。 * API函數(shù)中空字符的ASCII碼為0,即CHR(0)。 本文中的程序在Visual FoxPro 6.0下編譯通過,在WINDOWS98、WINDOWS2000下運(yùn)行成功 |
|
|