Каталог экзешника: вопросы по нюансам
От: ptrts  
Дата: 20.03.10 11:02
Оценка:
Добрый день

Делаю первые шаги в VC++ (до этого, давно-давно, в институте, програмил на C++ под DOS)

Поставил себе первую задачу, и, в рамках этой моей первой задачи, понадобилась глобальная переменная с каталогом экзешника.

На форумах нашел для этого дела пример, и сделал из него такую процедуру

void GetMainExeName(PTCHAR ExeName, HWND hWnd)
{
    DWORD ProcessId;
    HANDLE hProcess;
    HMODULE hModule;
    
    DWORD cbNeeded;
    
    GetWindowThreadProcessId(hWnd, &ProcessId);
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, ProcessId);
    EnumProcessModules(hProcess, &hModule, sizeof(hModule), &cbNeeded);
    GetModuleFileNameEx(hProcess, hModule, ExeName, sizeof(ExeName));
    CloseHandle(hProcess);
}


Задумывалось, что сия процедура будет вызываться в _tWinMain(...) и инициализировать, значит, мою глобальную переменную.

Сразу возникли вопросы.

Вопрос №1. Неужели чтобы получить хэндл процесса, никак не обойтись без hWnd? При чем здесь окно, ведь процесс как таковой вообще не обязан иметь окна

Вопрос №2. Чем отличается идентификатор процесса (который GetWindowThreadProcessId) от хэндла процесса (который OpenProcess)?

Сразу скажу, что задача не в том, чтобы получить каталог, а чтобы разобраться с попутно возникшими вопросами

Заранее спасибо за ответы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.