Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer '--- Should anyone of these be single instead?
Dim p = Process.GetProcessesByName("insert random process name here")
If p.Count > 0 Then
Dim ReadBuffer As Integer = 0 '--- Should this one be single instead?
ReadProcessMemory(p(0).Handle, &H400000, ReadBuffer, 4, 0)
Dim Result As Single = ReadBuffer
Msgbox(Result.ToString)
End If
Я мог бы использовать integer
в неправильных местах и, вероятно, должен использовать single
, но когда я это сделаю, я все еще не получаю правильные значения. Например, я изменил тип данных ReadBuffer
на Single
. Ошибка также может лежать здесь: Declare Function ReadProcessMemory
на одном или нескольких из Integer's
.
Это примерное значение, которое я ожидаю получить: 16.6317005
и вместо этого получаю значение: -9,808334E+08
или 1,1471E-25
или что-то еще, все в зависимости от того, где я изменяю тип данных integer
на single
. Я никогда не получаю правильное значение и перепробовал все комбинации.
Или, может быть, это просто проблема с конверсией?
Так что я думаю, что мой главный вопрос - что не так с моим кодом? Как правильно читать значения с плавающей точкой в VB.NET?