[c++] OpenProcess i bład 87

0

Witam,

Mam taki kod:

HWND hwnd = NULL;
DWORD nid = 0;
using namespace std;

int main(int argc, char *argv[])
{
    ios_base::sync_with_stdio(0);
    hwnd = FindWindow("notepad", NULL);
        if(hwnd == NULL)
        {
        return 1;
        }
    nid = GetWindowThreadProcessId(hwnd, NULL);
        if(nid == 0)
        {
        return 1;
        }
    cout<<nid<<endl;
    HANDLE handle = OpenProcess(PROCESS_VM_READ, false, nid);
        if(handle == NULL)
        {
        cout<<GetLastError()<<endl;
        getch();
        return 1;
        }
    CloseHandle(handle);
    return 0;
}

Program znajduje id notatnika, ale potem wyświtla 87, co wg. MSDN znaczy: "ERROR_INVALID_PARAMETER"

No i teraz pytanie, dlaczego tak się dzieje?

0

sprobuj tak z ciekawosci zamiast vm_read uzyc PROCESS_ALL_ACCESS. jestes pewien ze to nie system operacyjny Cie blokuje? moze proces docelowy chodzi na koncie innego uzytkownika i po prostu nie masz praw dostepu? ael wtedy to byloby access denied.. jedyne co mi na mysl przychodzi, to to ze PID jest nie prawidlowy -- sprawdzales?

0

Zmiana flag nic nie daje, a jeśli uruchamiam ten program jako admin to powinienem mieć dostęp, dlatego nie mam pojęcia o co chodzi :/

0

jedyne co mi na mysl przychodzi, to to ze PID jest nie prawidlowy -- sprawdzales?

mam na mysli czy sprawdzales w taskmanagerze PID tego notepada i czy sie zgadza z tym ktory Twoj program wyswietlil ponad owym '87' ?

0

Hmmm.... rzeczywiście pid się nie zgadza, ale w takim razie jak wydobyc je w poprawny sposob?

0
thread_id = GetWindowThreadProcessId(hwnd, &process_id);

widać już błąd ?

0

Ha, rzeczywiście, nie zauważyłem tego jak czytałem na msdn'ie o tej funkcji, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1