阿杰 发表于 2009-5-4 21:21:31

【开源】vfp创建VPN拨号连接

<p><font face="Verdana">创建VPN拨号连接*-----------------------------------------------<br/>* VPN 连接测试<br/>*-----------------------------------------------<br/>Local m.lnRasHandle, m.lcErrorStr, m.lnDisCount, m.lcDeviceType<br/>Local m.lcEntryName, m.lcPhoneNumber, m.lcUserName, m.lcPassword</font></p>
<p><font face="Verdana">*-----------------------------------------------<br/>* 创建拨号连接<br/>*-----------------------------------------------<br/>m.lcErrorStr&nbsp;&nbsp; = ""<br/>m.lcEntryName&nbsp; = "★★★"<br/>m.lcDeviceType = "vpn"<br/>If Ras_CreateEntry( m.lcEntryName, m.lcDeviceType, @lcErrorStr )<br/>&nbsp;&nbsp;&nbsp; = Messagebox("已经创建: "+m.lcEntryName, 0+64+0, "提示信息")<br/>Else<br/>&nbsp;&nbsp;&nbsp; = Messagebox(m.lcErrorStr, 0+16+0, "创建: "+m.lcEntryName+" 失败!")<br/>&nbsp;&nbsp;&nbsp; Return .F.<br/>Endif</font></p>
<p><font face="Verdana">*-----------------------------------------------<br/>* 连接VPN 测试<br/>*-----------------------------------------------<br/>m.lcPhoneNumber = "61.142.173.215"<br/>m.lcUserName&nbsp;&nbsp;&nbsp; = "huangyu"<br/>m.lcPassword&nbsp;&nbsp;&nbsp; = "huangyuhehe"</font></p>
<p><font face="Verdana">m.lnDisCount&nbsp; = 0<br/>m.lnRasHandle = 0<br/>m.lcErrorStr&nbsp; = ""<br/>m.lnRasHandle = Ras_Connect( m.lcEntryName, m.lcPhoneNumber, m.lcUserName, m.lcPassword, @lcErrorStr )<br/>If m.lnRasHandle &gt; 0<br/>&nbsp;&nbsp;&nbsp; * 连接成功<br/>&nbsp;&nbsp;&nbsp; = Messagebox("已经连接: "+m.lcEntryName, 0+64+0, "提示信息")<br/>&nbsp;&nbsp;&nbsp; If Ras_DisConn( m.lnRasHandle, @lcErrorStr )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 断开成功<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Messagebox("已经断开: "+m.lcEntryName, 0+64+0, "提示信息")<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 断开失败<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Messagebox(m.lcErrorStr, 0+16+0, "断开: "+m.lcEntryName+" 失败!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 尝试断开所有连接<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.lnDisCount = Ras_DisConn_All( @lcErrorStr )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If m.lnDisCount &gt; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 断开所有连接成功<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Messagebox("已经断开: "+Alltrim(Str(m.lnDisCount))+" 个连接", 0+64+0, "提示信息")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 断开所有连接失败<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = Messagebox(m.lcErrorStr, 0+16+0, "断开: 所有连接 失败!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br/>&nbsp;&nbsp;&nbsp; Endif<br/>Else<br/>&nbsp;&nbsp;&nbsp; * 连接失败<br/>&nbsp;&nbsp;&nbsp; = Messagebox(m.lcErrorStr, 0+16+0, "连接: "+m.lcEntryName+" 失败!")<br/>Endif</font></p>
<p><font face="Verdana">*-----------------------------------------------<br/>* 删除拨号连接<br/>*-----------------------------------------------<br/>m.lcErrorStr&nbsp; = ""<br/>If Ras_DeleteEntry( m.lcEntryName, @lcErrorStr )<br/>&nbsp;&nbsp;&nbsp; = Messagebox("已经删除: "+m.lcEntryName, 0+64+0, "提示信息")<br/>Else<br/>&nbsp;&nbsp;&nbsp; = Messagebox(m.lcErrorStr, 0+16+0, "删除: "+m.lcEntryName+" 失败!")<br/>Endif</font></p>
<p><font face="Verdana">*-----------------------------------------------<br/>Return</font></p>
<p><font face="Verdana">*===============================================<br/>* 拨号连接函数库<br/>*===============================================</font></p>
<p><font face="Verdana">Endfunc</font></p>
<p><font face="Verdana">*-----------------------------------------------<br/>* 函数: Ras_CreateEntry<br/>* 功能: 建立一个拨号连接<br/>* 参数: tcEntryName&nbsp;&nbsp; C, 连接名称<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcErrorStr&nbsp;&nbsp;&nbsp; C, 错误信息<br/>* 返回: IsCreated&nbsp;&nbsp;&nbsp;&nbsp; L, 是否建立<br/>* 设计: 红雨<br/>* 时间: 2005.12.18<br/>*-----------------------------------------------<br/>Function Ras_CreateEntry( tcEntryName, tcDeviceType, tcErrorStr )<br/>&nbsp;&nbsp;&nbsp; Local m.lnRetval, m.lcRASEntryProperties<br/>&nbsp;&nbsp;&nbsp; m.lnRetval = -1<br/>&nbsp;&nbsp;&nbsp; m.tcErrorStr = ""<br/>&nbsp;&nbsp;&nbsp; m.tcDeviceType = Iif(Type("m.tcDeviceType")="C", m.tcDeviceType, "vpn")<br/>&nbsp;&nbsp;&nbsp; If Type("m.tcEntryName")="C" And !Empty(m.tcEntryName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Declare Integer RasValidateEntryName In RasAPI32.Dll ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp;&nbsp; lpszPhonebook, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp;&nbsp; lpRasDialName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Declare Integer RasSetEntryProperties In RasAPI32.Dll ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp;&nbsp; lpszPhonebook, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp;&nbsp; lpszEntry, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp; @lpRasEntry, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer @lpdwEntryInfoSize, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp; @lpbpDeviceInfo, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer @lpdwDeviceInfoSize<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = RasValidateEntryName(Null, m.tcEntryName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.lcRASEntryProperties = Chr(232)+Chr(6)+Chr(0)+Chr(0) ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + Chr(16)+Chr(29)+Chr(0)+Chr(48) ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + Replicate(Chr(0), 964) ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + Padr(m.tcDeviceType, 796, Chr(0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.lnRetval = RasSetEntryProperties(Null, m.tcEntryName, @lcRASEntryProperties, 1768, Null, 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If m.lnRetval # 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.tcErrorStr = Ras_GetError( m.lnRetval )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.tcErrorStr = "名称参数错误!"<br/>&nbsp;&nbsp;&nbsp; Endif<br/>&nbsp;&nbsp;&nbsp; Return Empty(m.tcErrorStr)<br/>Endfunc</font></p>
<p><font face="Verdana">*-----------------------------------------------<br/>* 函数: Ras_DeleteEntry<br/>* 功能: 删除一个拨号连接<br/>* 参数: tcEntryName&nbsp;&nbsp; C, 连接名称<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcErrorStr&nbsp;&nbsp;&nbsp; C, 错误信息<br/>* 返回: IsDeleted&nbsp;&nbsp;&nbsp;&nbsp; L, 是否删除<br/>* 设计: 红雨<br/>* 时间: 2005.12.18<br/>*-----------------------------------------------<br/>Function Ras_DeleteEntry( tcEntryName, tcErrorStr )<br/>&nbsp;&nbsp;&nbsp; Local m.lnRetval<br/>&nbsp;&nbsp;&nbsp; m.lnRetval = -1<br/>&nbsp;&nbsp;&nbsp; m.tcErrorStr = ""<br/>&nbsp;&nbsp;&nbsp; If Type("m.tcEntryName")="C" And !Empty(m.tcEntryName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Declare Integer RasDeleteEntry In RasAPI32.Dll ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String lpszPhonebook, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String lpRasDialName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.lnRetval = RasDeleteEntry(Null, m.tcEntryName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If m.lnRetval # 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.tcErrorStr = Ras_GetError( m.lnRetval )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.tcErrorStr = "名称参数错误!"<br/>&nbsp;&nbsp;&nbsp; Endif<br/>&nbsp;&nbsp;&nbsp; Return Empty(m.tcErrorStr)<br/>Endfunc</font></p>
<p><font face="Verdana">*-----------------------------------------------<br/>* 函数: Ras_GetError<br/>* 功能: 获取Ras错误信息<br/>* 参数: tnRasRetval I, 错误代码<br/>* 返回: tcErrorStr&nbsp; C, 错误信息<br/>* 设计: 红雨<br/>* 时间: 2005.12.18<br/>*-----------------------------------------------<br/>Function Ras_GetError( tnRasRetval )<br/>&nbsp;&nbsp;&nbsp; Local m.lcErrorStr<br/>&nbsp;&nbsp;&nbsp; m.lcErrorStr = Space(256)<br/>&nbsp;&nbsp;&nbsp; If Type("m.tnRasRetval")="N" And m.tnRasRetval &gt; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Declare Integer RasGetErrorString In RasAPI32.Dll ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer lErrVal, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String @sErrStr, ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer lBufSize<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If !Empty(RasGetErrorString(m.tnRasRetval, @lcErrorStr, Len(m.lcErrorStr)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.lcErrorStr = "Ras 未知错误!"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Endif<br/>&nbsp;&nbsp;&nbsp; Endif</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Return Alltrim(m.lcErrorStr)<br/>Endfunc <br/></font></p>
页: [1]
查看完整版本: 【开源】vfp创建VPN拨号连接