Надо определить имена всех Dial Up соединений. У меня их несколько - три по именам сотовых операторов, да ещё и от стационарного телефона. Код на VB6 работает правильно, нашёл в сети код для С++, аналогично, ну ни как не могу
перевести на PureBasic. Вроде и ошибок не выдаёт, и работать не хочет. Может как то не правильно работаю со структурой, или не те типы переменных, или ещё что то? Посмотрите, кто грамотный, где могут быть грабли...
;Для VB6 рабочий пример
; Const RAS95_MaxEntryName = 256
; Private Type RASENTRYNAME95
; dwSize As Long
; szEntryName(RAS95_MaxEntryName) As Byte
; End Type
; Private Declare Function RasEnumEntries Lib "RasApi32.DLL" Alias "RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As Long
; Private Sub Form_Load()
; Dim s As Long, l As Long, ln As Long, a$
; ReDim R(255) As RASENTRYNAME95
; Me.AutoRedraw = True
; R(0).dwSize = 264 'Len(R(0))
; 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)
; Me.Print Left$(a$, InStr(a$, Chr$(0)) - 1)
; Next
; If ln = 0 Then
; Me.Print "No Dial-Up connections found!"
; End If
; End Sub
; **************************************************************
;Для PB v4.01 не рабочий пример:(
#RAS95_MaxEntryName = 256
Structure RASENTRYNAME95
dwSize.l; As Long
szEntryName.b[#RAS95_MaxEntryName]; As Byte
EndStructure
Global Dim R.RASENTRYNAME95(255)
Global s.l,l.l,ln.l,a$
R(0)\dwSize = 264
s = 256 * R(0)\dwSize
l = RasEnumEntries_(#Null,#Null, R(0), s, @ln); ln - кол-во соединений Dial Up определяет правильно!
For l = 0 To ln - 1
;a$=Str(R(l)\szEntryName)
Debug R(l)\szEntryName ; Вот тут не работает!
Next
; Кусок этого кода на C++
; RasEnumEntries(NULL, NULL, &re [0], &cb, &dwEntries);
; For(l = 0; l < dwEntries; l++)
; {
; printf(re[l].szEntryName); Вообще нет ни каких преобразований в Unicode!!!
; }
If ln = 0
Debug "No Dial-Up connections found!"
EndIf