在VB中如何通过指向整数的指针得到整数
编号:QA004589
建立日期: 2002年3月21日 最后修改日期:2002年3月21日
所属类别:
dudq:
操作系统:windows2000 server
编程工具:中文vb6.0
问题:我在进行windows2000终端服务管理的编程,其中有一个API:
Public Declare Function WTSQuerySessionInformation _
Lib "wtsapi32.dll" Alias "WTSQuerySessionInformationA" ( _
ByVal hServer As Long, ByVal SessionID As Long, _
ByVal pWTSInfoClass As WTS_INFO_CLASS, ByRef ppSessionInfo As Long, _
ByRef pBytesReturned As Long _
) As Boolean
WTS_INFO_CLASS是一个枚举类型:
Public Enum WTS_INFO_CLASS
WTSInitialProgram
WTSApplicationName
WTSWorkingDirectory
WTSOEMId
WTSSessionId
WTSUserName
WTSWinStationName
WTSDomainName
WTSConnectState
WTSClientBuildNumber
WTSClientName
WTSClientDirectory
WTSClientProductId
WTSClientHardwareId
WTSClientAddress
wtsClientDisplay
End Enum
用于指定想要得到的信息,我想得到WTSConnectState,即连接状态,它是一个指向枚举类型的指针(指向整数的指针):
Public Enum WTS_CONNECTSTATE_CLASS
WTSActive
WTSConnected
WTSConnectQuery
WTSShadow
WTSDisconnected
WTSIdle
WTSListen
WTSReset
WTSDown
WTSInit
End Enum
在WTSQuerySessionInformation 调用后,参数ppSessionInfo 中保存有所需信息的指针,我如何通过这个指针得到这个整数?其实这个问题的核心是在VB中如何通过指向整数的指针得到这个整数。万分感谢!
水平: 高手
回答:
可以使用CopyMemory API函数,将ppSessionInfo的值按传值(ByVal)传递给CopyMemory的Source, 而Destination参数则用传址(ByRef):
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
'...
Dim nSessionInfo As Long
CopyMemory nSessionInfo, byval ppSessionInfo, 4
'...
相关问题:
QA004549 "VB不支持函数指针,有什么方法可以解决"
此问题由Lee Yingxin回答。
| |
|
|
| |
|
|