掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
RasEnumEntriesの戻り値エラーについて (ID:80196)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
自分も何年か前に同じ事で悩んでいた覚えがあります。 その時に動いたコードを抜粋しておきます。 動作させる環境がないのでテストはしてませんが... 参考までに その時の問題は、魔界の仮面弁士さんの書き込みにあるように 「dwSizeメンバに、構造体サイズを指定するサイズが いくつになるか」でした。 '------ 以下、ソースコード Option Explicit Public Declare Function RasEnumEntries_Win2000 Lib "rasapi32.dll" Alias "RasEnumEntriesA" (ByVal reserved As Long, ByVal lpszPhonebook As String, lpRasEntryName As typeRASENTRYNAME_WIN2000, lpcb As Long, lpcEntries As Long) As Long Public Const MAX_PATH = 260 Public Const RAS95_MaxEntryName = 256 Public Const RASBASE = 600& Public Const ERROR_BUFFER_TOO_SMALL = (RASBASE + 3&) Public Type typeRASENTRYNAME_WIN2000 dwSize As Long szEntryName(0 To RAS95_MaxEntryName) As Byte bytPadding1(0 To 2) As Byte dwFlags As Long szPhonebookPath(0 To MAX_PATH) As Byte bytPadding2(0 To 2) As Byte End Type ' - - - - - - - - - - - - - Public SubFunc() Dim lRet As Long ' 戻り値 Dim tRasBuffer() As typeRASENTRYNAME_WIN2000 ' RASエントリ名称構造体 Dim lBufferSize As Long ' RASエントリ名称エリアの取得バッファサイズ Dim lRasEntries As Long ' RASエントリ名称の取得数 ' 電話帳から電話番号名称を取得する ReDim tRasBuffer(0) lSize = LenB(tRasBuffer(0)) ' 電話番号名称構造体のサイズをとりあえず1つにする tRasBuffer(0).dwSize = lSize ' 構造体サイズを設定する lRet = RasEnumEntries_Win2000(0&, vbNullString, tRasBuffer(0), lBufferSize, lRasEntries) If lRet = 0& Then ' 電話帳から正常に取得 ElseIf lRet = ERROR_BUFFER_TOO_SMALL Then ' 電話帳に複数の電話番号が登録されている Debug.Print "登録数 = " & CStr(lRasEntries) ReDim tRasBuffer(0 To lRasEntries - 1&) ' 電話番号名称構造体のサイズを変更 tRasBuffer(0).dwSize = lSize ' 構造体サイズを設定する lRet = RasEnumEntries_Win2000(0&, vbNullString, tRasBuffer(0), lBufferSize, lRasEntries) If lRet = 0 Then ' 電話帳から正常に取得 Else ' 取得エラー Debug.Print "エラー = " & CStr(lRet) End If Else ' 取得エラー Debug.Print "エラー = " & CStr(lRet) End If End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.