ReadPrcessMemory gibt nur NULL zurück

07/28/2010 22:49 bannibank#1

Warum gibt der immer nur NULL zurück?
Was mach ich falsch?
Hab noch jetzt echt durch ganz google geklickt
und bin immer noch nicht schlauer

wer nett wenn mir wer helfen kann

Mfg
bannibank
07/28/2010 23:59 scenebase#2
Code:
    int Value;
    DWORD pid;

    HWND hwnd = FindWindow(NULL, "ICQ");

    if(!hwnd)
    {
        cout << "Fenster nicht gefunden!" << endl;;
    }
    else
    {
        GetWindowThreadProcessId(hwnd,&pid);
        HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
        ReadProcessMemory(phandle,(LPVOID)Addresse,&Value,sizeof(int),0);
    }
So sollte es gehen, du hast einfach nur das "OpenProcess(PROCESS_ALL_ACCESS, 0, pid);" vergessen :)
07/30/2010 00:02 bannibank#3
Sorry aber ich weiß nicht wie ich das in C# mache

HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);

die variable pid ist denk ich ein int die 0 (ein boolean) isst dann false aber was PROCESS_ALL_ACCESS hab ich keine ahnung

MfG
bannibank
07/30/2010 10:20 HardCore.1337#4
OpenProcess gibt ein Handle zurück.
07/30/2010 14:08 bannibank#5
Mein OpenProcess gibt ein IntPtr zürück welchen ich auch bei ReadProcessMemory brauche
ich wweiß aber nicht was PROCESS_ALL_ACCESS ist
ich brauche ein UInt32
07/30/2010 14:37 Bot_interesierter#6
[Only registered and activated users can see links. Click Here To Register...]
hier steht was PROCESS_ALL_ACCESS ist und auch warum man es nicht verwenden sollte.

IntPtr ist übrigens der richtige Datentyp für HANDLE in C# und je nach dem was für eine Library du benutzt um die Windows Api Funktionen in C# zu benutzten sollte auch PROCESS_ALL_ACCESS und die anderen access flags definiert sein.
Allgemein empfiehlt es sich die Dokumentation zu den Windows Api Funktionen zu lesen, die bezieht sich zwar meistens nur auf C++, allerdings merkst du dann schneller, wenn du ein Window Handle mit einem offenen Prozess Handle verwechselst.
Außerdem solltest du immer die Rückgabewerte der Windows API Funktionen überprüfen und gegebenen Falls dann den Error Code auslesen, wie das geht kannst du auch auf msdn nachlesen.
07/30/2010 14:46 HardCore.1337#7
Quote:
ich weiß aber nicht was PROCESS_ALL_ACCESS ist
Wörtlich: Prozess alle Berechtigungen
Sinn: Man besitzt alle berechtigunen um auf den Prozess zugreifen zu können