掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Ras通信について (ID:87871)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
すいません。コードは以下のようになっています。サイトの方にも質問してみます。 [モジュール] Public Const RAS_MaxDeviceType As Long = 16& Public Const RAS_MaxDeviceName As Long = 32& Type RASDEVINFO 'RASDEVINFO構造体 dwSize As Long szDeviceType(RAS_MaxDeviceType) As Byte szDeviceName(RAS_MaxDeviceName) As Byte End Type 'RASデバイス名取得 Declare Function RasEnumDevices Lib "RasApi32.DLL" Alias "RasEnumDevicesA" (lpRasDevInfo As Any,lpcb As Long, _ lpcDevices As Long) As Long [フォーム] Dim i As Long 'ループカウンタ Dim lngRet As Long 'API戻り値 Dim lngLen As Long '必要バッファサイズ Dim lngLenBlock As Long 'RASDEVINFO構造体バッファサイズ Dim lngCount As Long 'デバイス数 Dim typeRASDEVINFO As RASDEVINFO 'RASDEVINFO構造体 Dim tbRASDEVINFO() As RASDEVINFO 'RASDEVINFO構造体配列 Dim byteRASDEVINFO() As Byte 'RASDEVINFOバイト配列 '構造体のサイズ、デバイス数の取得 '*------------------------------------------------------------* '第1引数の RASDEVINFO 構造体 に NULL '第2引数のバイトサイズに 0 '第3引数のデバイス数に 0 'を指定して、RasEnumDevices関数を実行する事により、lngLen, lngCounに '必要バイトサイズ、デバイス数を取得します。 '*---------------------------------------------------------* lngRet = RasEnumDevices(vbNullString, lngLen, lngCount) If lngRet = ERROR_BUFFER_TOO_SMALL Then If lngLen > 0 And lngCount > 0 Then 'RASDEVINFO構造体配列数設定 ReDim tbRASDEVINFO(lngCount - 1) '取得バッファサイズより、RASDEVINFO構造体サイズ計算 lngLenBlock = lngLen If lngCount > 1 Then lngLenBlock = lngLen \ lngCount End If tbRASDEVINFO(0).dwSize = lngLenBlock 'バッファを確保 ReDim byteRASDEVINFO(lngLen - 1) 'RASDEVINFO構造体をバッファに移動 Call MoveMemory(byteRASDEVINFO(0), tbRASDEVINFO(0),lngLen) 'RASデバイスの取得 lngRet = RasEnumDevices(byteRASDEVINFO(0), lngLen, lngCount) If lngRet = 0 Then 'バッファをRASDEVINFO構造体に移動 Call MoveMemory(tbRASDEVINFO(0), byteRASDEVINFO(0), Len(typeRASDEVINFO) * lngCount) 'デバイスの列挙 For i = 0 To lngCount - 1 With tbRASDEVINFO(i) List1.AddItem "[" & _ Left$(StrConv(.szDeviceType(), vbUnicode), InStr(StrConv(.szDeviceType(), vbUnicode), Chr$(0)) - 1) & _ "]" & Chr(9) & _ Left$(StrConv(.szDeviceName(), vbUnicode), InStr(StrConv(.szDeviceName(), vbUnicode), Chr$(0)) - 1) End With Next i Else MsgBox PRasGetErrorString(lngRet), vbCritical, "RasEnumDevicesエラー" End If Else MsgBox "デバイスが存在しません。", vbCritical, "RasEnumDevicesエラー" End If Else MsgBox PRasGetErrorString(lngRet), vbCritical, "RasEnumDevicesエラー" End If End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.