目前我正在使用C#编写游戏培训师(请注意,我只是为了一个私人服务器而制作一个游戏教练,而不是为了让游戏成为"有史以来最好的玩家而且#34;)它运作顺利,但不是字符串。
当我第一次写字符串并且我有10个字符时,它正在工作(例如:#hellolady!)。当我输入8个字符(例如hellolol)时,它会自动写出10个字符,所以新字符串就是hellololy!。
我不知道为什么会出现问题,这是我的WriteString:
public static bool WriteString(IntPtr handle, int address, string value)
{
int written;
byte[] data = Encoding.Default.GetBytes(value);
return WriteProcessMemory(handle, address, data, data.Length, out written);
}
我的WriteProcessMemory:
[DllImport("Kernel32.dll")]
static extern bool WriteProcessMemory(IntPtr handle, int lpBaseAddress, byte[] lpBuffer, int nSize, out int lpNumberOfBytesWritten);
希望有人可以帮助我。
答案 0 :(得分:0)
编辑有效的函数,你必须在GetBytes使用null终止符,然后它才能工作。
public static bool WriteString(IntPtr handle, int address, string value)
{
int written;
byte[] data = Encoding.Default.GetBytes(value + "\0");
return WriteProcessMemory(handle, address, data, data.Length, out written);
}