【已解决】列举宽带连接名称的函数调用
本帖最后由 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 #include <rasapi.au3>
$aEntry = _RasEnumEntries()
_ArrayDisplay($aEntry)
If $aEntry Then
_RasDial($aEntry, "UserName", "Password")
EndIf
rasapi.au3 - http://www.autoitx.com/thread-17179-1-1.html
Func _WinAPI_RasEnumEntries()
Local $Result
Local $tBuffer = DllStructCreate($tagRASENTRYNAME)
Local $iBufferSize = DllStructGetSize($tBuffer)
Local $mem = __MemGlobalAlloc(256 * $iBufferSize, 0x0040)
Local $aRasEntryName
For $i = 0 To 255
$aRasEntryName[$i] = DllStructCreate($tagRASENTRYNAME, $mem + ($i * $iBufferSize))
Next
DllStructSetData($aRasEntryName, 1, $iBufferSize)
Local $Res = DllCall("rasapi32.dll", "int", "RasEnumEntries", "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($aRasEntryName), "int*", 256 * $iBufferSize, "int*", 0)
If $Res = 0 Then
For $i = 0 To $Res - 1
$Result[$i] = DllStructGetData($aRasEntryName[$i], "szEntryName")
ReDim $Result
Next
ReDim $Result
Return $Result
Else
Return SetError(0, _WinAPI_GetLastError(), $Res)
EndIf
EndFunc ;==>_WinAPI_RasEnumEntries
感谢P版,rasapi这个Udf虽然有太多不明白,慢慢研究,确定强大
同时也谢谢netegg 不错,学习了 rasapi.au3直接报错。au3版本太老?
页:
[1]