2012-03-30 8 views
1

Ich versuche WriteProcessMemory mit Qt mit QtCreator. Wenn ich den Knopf drücke, schreibt er nicht. Hier ist der Code, den ich benutze, wenn jemand helfen könnte.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 ist ein Typdef in Windows.h verwendet. Sind Sie sicher, dass Sie einen solchen plattformspezifischen Typ in Qt verwenden möchten? – ksming

+0

Sie müssen '#include ' –

+0

hinzufügen ich möchte verwenden, was Standard in QT ist. Ich bin nicht sicher, weil ive nur das für C++ gemacht – Tprice88

Antwort

2

Falls Sie diesen Fehler nicht lösen haben:

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

Funktionsnamen sind Fälle empfindlich in C/C++ etc .. Benennen Sie also Ihre Funktion in "Attach (...)" um.

+0

Lol danke ich merke das – Tprice88

2

Ihnen fehlt ein Include zu windows.h.

Dies wurde durch den Fehler

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

als hProcess deklariert wird als

HANDLE hProcess;

Es für, bestimmt die Art vor hProcess nicht definiert ist.

Ihr Problem zu lösen, müssen Sie die folgende

#include <windows.h> 
+0

Jetzt bekomme ich nur diese Fehler. 'mainwindow.cpp (13): Fehler C2664:' FindWindowW ': kann Parameter 2 nicht von' const char [31] 'in' LPCWSTR 'konvertieren Typen, auf die verwiesen wird, sind nicht verwandt; Umwandlung erfordert reinterpret_cast, C-style-Umwandlung oder Funktionsargumentation mainwindow.cpp (14): Fehler C2664: 'GetWindowThreadProcessId': Parameter 2 kann nicht von 'int *' in 'LPDWORD' konvertiert werden Typen, auf die verwiesen wird, sind nicht verwandt; Umwandlung erfordert reinterpret_cast, C-Stil-Cast oder Funktion-Stil Cast mainwindow.cpp (105): Fehler C3861: 'Attach': Bezeichner nicht gefunden ' – Tprice88

+0

Während es ist etwas schwer zu lesen, die Formatierung (ich schlage vor, Ihre ursprüngliche Antwort zu ändern Mit dieser Nachricht sieht es so aus, als ob Sie ein Unicode- oder Multibyte-Problem haben. – josephthomas

+0

Um die Einstellungen für Unicode und Multibyte in einem VS2010-Projekt zu ändern, gehen Sie zu Projekteigenschaften -> Konfigurationseigenschaften -> Allgemein und sehen Sie sich "Zeichensatz" an. – josephthomas