掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.netでのCopyMemoryを利用するには (ID:122144)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
下記のようなコードがあります。 これはターミナルサービスに現在のセッション情報を取得し デバック情報として表示するものです。 (microsoft社のサンプルより) Private Type WTS_SESSION_INFO SessionID As Long pWinStationName As Long state As WTS_CONNECTSTATE_CLASS End Type Private Declare Function WTSEnumerateSessions _ Lib "wtsapi32.dll" Alias "WTSEnumerateSessionsA" ( _ ByVal hServer As Long, ByVal Reserved As Long, _ ByVal Version As Long, ByRef ppSessionInfo As Long, _ ByRef pCount As Long _ ) As Long Private Declare Sub WTSFreeMemory Lib "wtsapi32.dll" ( _ ByVal pMemory As Long) Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _ Destination As Any, Source As Any, ByVal length As Long) Private Function GetWTSSessions() As WTS_SESSION_INFO() Dim RetVal As Long Dim lpBuffer As Long Dim Count As Long Dim p As Long Dim arrSessionInfo() As WTS_SESSION_INFO Dim i As Integer RetVal = WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, _ 0&, _ 1, _ lpBuffer, _ Count) If RetVal Then ' WTSEnumerateProcesses was successful. p = lpBuffer ReDim arrSessionInfo(Count - 1) 問題箇所 CopyMemory arrSessionInfo(0), ByVal p,Count * LenB(arrSessionInfo(0)) For i = LBound(arrWTSSessions) To UBound(arrWTSSessions) Debug.Print "Session ID: " & arrWTSSessions(i).SessionID Debug.Print "Machine Name: " & _ PointerToStringA(arrWTSSessions(i).pWinStationName) Debug.Print "Connect State: " & arrWTSSessions(i).state Debug.Print "***********" Next i しかしこれはVB6用のもののためVB.netにコンバートしようとしたのですがうまくいきません。 問題点 1.問題となっているのはWTSEnumerateSessionsの4番目の引数(lpBuffer)を WTS_SESSION_INFO型の構造体にコピーしているCopyMemory(API)がVB.netでは うまくいきません。 ご存知の方どうかお力添えをおねがいします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.