1

代码:

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <iomanip>
#include <locale>
#include <sstream>
#include <string>
int main()
{
    HWND handle = FindWindow(0 ,TEXT("window name"));
    if(handle == 0)
    {
             MessageBox(0,TEXT("Failed to find window"),TEXT("Return"),MB_OK);
    }
    else
    {
    DWORD ID;
    GetWindowThreadProcessId(handle,&ID);
    HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION , FALSE, ID);
    hProcess = OpenProcess(PROCESS_VM_READ , FALSE, ID);

    if(!hProcess)
    {
        Beep(1000,1000);
    }else {

          int buffer;
        if (ReadProcessMemory(hProcess,(void *)0x00963FC4,&buffer,4,NULL))  
        {
             printf(buffer);
        }
        else  {
            MessageBox(0,TEXT("Could not Read"),TEXT("Return"),MB_OK);
              }

        }CloseHandle(hProcess);
    }

}


我试图 让这个程序读取内存地址,
但我得到了这个错误: IntelliSense
:“int”类型的参数与“const char *”类型的参数不兼容 不行。


字符串测试;

4

1 回答 1

1

首先,尝试使用带有格式字符串的正确 printf() 调用:

printf("%d", buffer);

C 是一种静态类型的语言,你不能用 printf() 做类似 python 的东西来输出你想要的任何东西。printf() 函数始终只打印第一个“const char *”参数,允许根据规则替换此字符串中的某些值。

其次,我在您的代码中看到了 TEXT() 宏,因此您可能在项目设置中使用了 Unicode 字符串。如果是这样(你应该在 VC++ 中得到链接错误 2019/2005),你必须使用 wprintf() 函数:

wprintf(L"%d", buffer);

要打印 std::string 对象,您还必须将其转换为“const char*”。这是通过 string::c_str() 调用完成的:

std::string MyString("Test");
printf("Your string is = %s", MyString.c_str());
于 2012-05-21T05:55:50.210 回答