回 帖 发 新 帖 刷新版面

主题:为什么取不到内存值?

Public  Class  Form1  
       Public  Declare  Function  FindWindow  Lib  "user32"  Alias  "FindWindowA"  (ByVal  hwnd  As  String,  ByVal  lpText  As  String)  As  Integer  
       Public  Declare  Function  GetWindowThreadProcessId  Lib  "user32"  (ByVal  hwnd  As  Integer,  ByRef  lpdwProcessId  As  Integer)  As  Integer  
       Public  Declare  Function  OpenProcess  Lib  "kernel32"  (ByVal  dwDesiredAccess  As  Integer,  ByVal  bInheritHandle  As  Integer,  ByVal  dwProcessId  As  Integer)  As  Integer  
       Public  Const  PROCESS_ALL_ACCESS  =  &H1F0FFF  
       Public  Declare  Function  ReadProcessMemory  Lib  "kernel32.dll"  (  _  
                                                                                                                                   ByVal  hProcess  As  Integer,  _  
                                                                                                                                   ByVal  lpBaseAddress  As  Integer,  _  
                                                                                                                                   ByRef  lpBuffer()  As  Byte,  _  
                                                                                                                                   ByVal  nSize  As  Integer,  _  
                                                                                                                                   ByRef  lpNumberOfBytesWritten  As  Integer)  As  Integer  
       Public  Declare  Function  CloseHandle  Lib  "kernel32"  (ByVal  hObject  As  Integer)  As  Integer  
 
 
       Private  Sub  Button1_Click(ByVal  sender  As  System.Object,  ByVal  e  As  System.EventArgs)  Handles  Button1.Click  
               Dim  jb  As  Integer  
               Dim  pid  As  Integer  
               Dim  hProcess  As  Integer  
               Dim  bufferr(10)  As  Byte  
               Dim  readnumber  As  Integer  
               jb  =  FindWindow("Sword3  Class",  Nothing)  
               GetWindowThreadProcessId(jb,  pid)  
               hProcess  =  OpenProcess(PROCESS_ALL_ACCESS,  0,  pid)  
               ReadProcessMemory(hProcess,  &HC0890C0,  bufferr,  bufferr.Length,  readnumber)  
               TextBox1.Text  =  System.Text.Encoding.Default.GetString(bufferr)//错在这,提示“数组不能为空”  
 
我在 局部变量 里看到,bufferr的值为Nothing,  
为什么??

回复列表 (共3个回复)

沙发

谁知道哦,教教我

板凳

Public Class ComInfo
    Private ComInfo As Devices.ComputerInfo
    Public Function GetInfo() As String
        Dim str As String = ""
        ComInfo = New Devices.ComputerInfo
        str += "总物理内存:" & CSng(ComInfo.TotalPhysicalMemory / 1024 / 1024).ToString & "MB" & vbCrLf
        str += "可用物理内存:" & CSng(ComInfo.AvailablePhysicalMemory / 1024 / 1024).ToString & "MB" & vbCrLf
        str += "操作系统:" & ComInfo.OSFullName.Remove(0, 10).ToString & vbCrLf
        str += "系统平台:" & ComInfo.OSPlatform.ToString & vbCrLf
        str += "系统版本:" & ComInfo.OSVersion.ToString.Remove(8, 7) & vbCrLf
        Return str
    End Function
End Class


这是我程序里的一个类!用来获取系统信息!我没用API函数!

3 楼

我用的是visual stdio 2005

我来回复

您尚未登录,请登录后再回复。点此登录或注册