2012-03-30 2 views
1

Я пытаюсь WriteProcessMemory использовать Qt с QtCreator. Когда я нажимаю кнопку, она не записывается. Вот код, который я использую, если кто-то может помочь.C++ Qt WriteProcessMemory

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <windows.h> 

HANDLE hProcess; 
int MYBASE; 

void Attach() { 
    DWORD pid; 
    HWND hWindow = FindWindow(NULL, L"Generic Property Editor Thingy"); 
    GetWindowThreadProcessId(hWindow, &pid); 
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid); 
} 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::on_pushButton_clicked() 
{ 
    Attach(); 
    WriteProcessMemory(hProcess, (void*)0x4E709C, (void*)(PBYTE)"\xEB", 1, NULL); 

} 
+0

HANDLE - это typedef, используемый в windows.h. Вы действительно хотите использовать такой тип платформы в Qt? – ksming

+0

Вам нужно добавить '#include ' –

+0

Я хочу использовать то, что стандартно в QT. im не уверен, потому что я только сделал это для C++ – Tprice88

ответ

2

В случае, если вы не решить эту ошибку:

mainwindow.cpp(103) : error C3861: 'Attach': identifier not found 

имена функций случаев чувствительны в C/C++ и т.д .. Поэтому переименуйте свою функцию в «Прикрепить (...)»

+0

Lol спасибо, я заметил, что – Tprice88

2

Вам не хватает включить windows.h.

Это было обусловлено ошибкой

error C2146: syntax error : missing ';' before identifier 'hProcess' 

, как hProcess объявлен как

HANDLE hProcess;

Там для, тип, прежде чем hProcess не определен.

Чтобы решить проблему, необходимо иметь следующие

#include <windows.h> 
+0

Теперь я просто получаю эти ошибки. 'mainwindow.cpp (13): ошибка C2664:' FindWindowW ': не может преобразовать параметр 2 из' const char [31] 'в' LPCWSTR ' Указанные типы не связаны; Для преобразования требуется reinterpret_cast, листинг cast в стиле C или стиль функции mainwindow.cpp (14): ошибка C2664: 'GetWindowThreadProcessId': не может преобразовать параметр 2 из 'int *' в 'LPDWORD' Указанные типы не связаны; для преобразования требуется reinterpret_cast, листинг типа C или стиль функции mainwindow.cpp (105): ошибка C3861: 'Attach': идентификатор не найден ' – Tprice88

+0

Хотя это трудно прочитать форматирование (я предлагаю изменить исходный ответ с этим сообщением) похоже, что у вас есть проблема с unicode vs multibyte. – josephthomas

+0

Чтобы изменить настройку unicode и multibyte в проекте VS2010, перейдите в «Свойства проекта» -> «Свойства конфигурации» -> «Общие» и посмотрите «Набор символов». – josephthomas

Смежные вопросы