簡體   English   中英

C ++打印緩沖區(整數到字符串)

[英]c++ print buffer (integer to string)

碼:

#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 *類型的參數不兼容
我嘗試了printf(buffer);
我試圖打線,也沒有用。

弦測試

首先,嘗試使用格式字符串正確的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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM