找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4489|回复: 0

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

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2009-5-4 21:21:31 | 显示全部楼层 |阅读模式
<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>
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表