在变量上使用 Visual Basic 类型字符
Using Visual Basic Type Characters on Variables
大家下午好,
我有一个简单的问题,我相信你们中的一些人能够解决或变通。我正在开发一个程序,允许用户从活动进程列表中 select 一个进程,然后编辑它的内存值。
我正在从文本字段中获取值,例如内存地址和新值,并将它们解析为整数。然后我需要在函数中使用这些值,其中值(特别是地址和偏移量)通常使用 &H
类型字符进行硬编码。
例如,地址参数可以这样指定:&H00509B74
.
此类型字符不适用于变量或函数,因为以下示例是无效语法:
&HAddress
或 &HInteger.Parse(AddressField.Text)
我怎样才能使它工作或解决这个问题?下面是我正在使用的一些代码。我多次回去编辑它以确保我没有遗漏任何内容,如果您需要更多信息,请告诉我。
预先感谢您的帮助和时间!
注:写内存功能不是我的,网上找的
注2:"ac_client"是我测试的进程名,因为我没有实现进程所以是硬编码的select还是。
写内存函数:
Public Function WriteDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Integer, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
Try
Dim lvl As Integer = Address
For i As Integer = 1 To Level
lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
Next
WriteInteger(Process, lvl, Value, nsize)
Return True
Catch ex As Exception
Return False
End Try
End Function
正在初始化变量:
Process = "ac_client"
Address = Integer.Parse(AddressField.Text)
WriteValue = Integer.Parse(ValueField.Text)
如果
AddressField.Text = "00509B74"
那你就可以了
Address = Convert.ToInt32(AddressField.Text,16) 'this will convert an string containing a number written "in base 16", into an integer, and store it in the Address variable
如果
AddressField.Text = "&H00509B74"
然后你可以简单地忽略作为 VB 特定十六进制表示法
的第 2 个字符“&H”
Address = Convert.ToInt32(AddressField.Text.Substring(1,AddressField.Text.Length-2),16)
大家下午好,
我有一个简单的问题,我相信你们中的一些人能够解决或变通。我正在开发一个程序,允许用户从活动进程列表中 select 一个进程,然后编辑它的内存值。
我正在从文本字段中获取值,例如内存地址和新值,并将它们解析为整数。然后我需要在函数中使用这些值,其中值(特别是地址和偏移量)通常使用 &H
类型字符进行硬编码。
例如,地址参数可以这样指定:&H00509B74
.
此类型字符不适用于变量或函数,因为以下示例是无效语法:
&HAddress
或 &HInteger.Parse(AddressField.Text)
我怎样才能使它工作或解决这个问题?下面是我正在使用的一些代码。我多次回去编辑它以确保我没有遗漏任何内容,如果您需要更多信息,请告诉我。 预先感谢您的帮助和时间!
注:写内存功能不是我的,网上找的
注2:"ac_client"是我测试的进程名,因为我没有实现进程所以是硬编码的select还是。
写内存函数:
Public Function WriteDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Integer, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
Try
Dim lvl As Integer = Address
For i As Integer = 1 To Level
lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
Next
WriteInteger(Process, lvl, Value, nsize)
Return True
Catch ex As Exception
Return False
End Try
End Function
正在初始化变量:
Process = "ac_client"
Address = Integer.Parse(AddressField.Text)
WriteValue = Integer.Parse(ValueField.Text)
如果
AddressField.Text = "00509B74"
那你就可以了
Address = Convert.ToInt32(AddressField.Text,16) 'this will convert an string containing a number written "in base 16", into an integer, and store it in the Address variable
如果
AddressField.Text = "&H00509B74"
然后你可以简单地忽略作为 VB 特定十六进制表示法
的第 2 个字符“&H”Address = Convert.ToInt32(AddressField.Text.Substring(1,AddressField.Text.Length-2),16)