找回密码
 加入
搜索
查看: 4319|回复: 5

[网络通信] 【已解决】列举宽带连接名称的函数调用

  [复制链接]
发表于 2011-4-7 09:43:40 | 显示全部楼层 |阅读模式
本帖最后由 aqtd 于 2011-4-7 12:54 编辑

在网上查到,rasapi32.dll中的RasEnumEntries 可以列举所有远程访问的名称,可是我不会调用,不知道其中的那些参数怎么搞。对api不熟。
我想得到宽带名称后就可以用dos命令静默连接。
有一段vb源码参考
Public Sub listPhoneBookEntry()
    Form1.Combo1.Clear
    Dim s As Long, l As Long, ln As Long, a$
    ReDim r(255) As RasEntryName

    r(0).dwSize = 264
    s = 256 * r(0).dwSize
    l = RasEnumEntries(vbNullString, vbNullString, r(0), s, ln)
    For l = 0 To ln - 1
        a$ = StrConv(r(l).szEntryName(), vbUnicode)
        Form1.Combo1.AddItem Left$(a$, InStr(a$, Chr$(0)) - 1)
    Next
    If Form1.Combo1.ListCount > 0 Then
        Form1.Combo1.ListIndex = 0
        '  Form1.combo1_Click
    End If

End Sub
发表于 2011-4-7 11:08:32 | 显示全部楼层
#include <rasapi.au3>

$aEntry = _RasEnumEntries()
_ArrayDisplay($aEntry)

If $aEntry[0][0] Then
        _RasDial($aEntry[1][0], "UserName", "Password")
EndIf


rasapi.au3 - http://www.autoitx.com/thread-17179-1-1.html
发表于 2011-4-7 12:33:37 | 显示全部楼层
Func _WinAPI_RasEnumEntries()
        Local $Result[1]
        Local $tBuffer = DllStructCreate($tagRASENTRYNAME)
        Local $iBufferSize = DllStructGetSize($tBuffer)
        Local $mem = __MemGlobalAlloc(256 * $iBufferSize, 0x0040)
        
        Local $aRasEntryName[256]

        For $i = 0 To 255
                $aRasEntryName[$i] = DllStructCreate($tagRASENTRYNAME, $mem + ($i * $iBufferSize))
        Next
        DllStructSetData($aRasEntryName[0], 1, $iBufferSize)

        Local $Res = DllCall("rasapi32.dll", "int", "RasEnumEntries", "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($aRasEntryName[0]), "int*", 256 * $iBufferSize, "int*", 0)

        If $Res[0] = 0 Then
                For $i = 0 To $Res[5] - 1
                        $Result[$i] = DllStructGetData($aRasEntryName[$i], "szEntryName")
                        ReDim $Result[UBound($Result) + 1]
                Next
                ReDim $Result[UBound($Result) - 1]
                Return $Result
        Else
                Return SetError(0, _WinAPI_GetLastError(), $Res[0])
        EndIf
EndFunc   ;==>_WinAPI_RasEnumEntries
 楼主| 发表于 2011-4-7 12:52:18 | 显示全部楼层
感谢P版,rasapi这个Udf虽然有太多不明白,慢慢研究,确定强大
同时也谢谢netegg
发表于 2011-4-7 14:05:49 | 显示全部楼层
不错,学习了
发表于 2011-7-11 17:20:53 | 显示全部楼层
rasapi.au3直接报错。au3版本太老?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-13 07:45 , Processed in 0.078252 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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