热情软件屋

 

在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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio