.::.DIMA.::.
Сообщений: 17
Оценки: 0
Присоединился: 2011-09-07 23:58:38.840000
|
Мне нужно запустить свой поток в чужом порцессе. Код потока слудующий: DWORD WINAPI ThreadFunction(LPVOID params) {
while(true) {
MessageBoxA(NULL, "Hello!", "Hello!", 0);
Sleep(1000);
}
return 0;
} Есть метод, возвращающий ID нужного процесса (метод работает). И я хочу получить HANDLE: HANDLE OpenProcess(const char * procName) {
DWORD pId = GetProcessID(procName);
return OpenProcess(PROCESS_ALL_ACCESS, false, pId);
} На Windows Vista и выше это не работает, т.к. процессы защищены. Генерируется исключение и всё. На Windows XP исключение не возникает, но HANDLE равен NULL и функция GetLastError возвращает 5 - Acess Denied. Ошибка, скорее всего в параметре PROCESS_ALL_ACCESS, т.к. если флаг сменить, например, PROCESS_CREATE_PROCESS ошбок не возникает, но и код моей функции не выполняется, видимо, PROCESS_CREATE_PROCESS не позволяет. Скажите, как сделать, чтобы код выполнился? Может быть, есть аналоги OpenProcess или другие флаги использовать?
|