Hello Victor,
Saturday, December 10, 2005, 11:28:03 PM, you wrote:
VVV> Здравствуйте !
>> GetFullPathName упорно возвращает имя приложения, из
>> которого оно запускается.
>> if (Process32First(hSnap, &proc))
>> {
>> if (proc.th32ProcessID==pid){
>> GetFullPathName(proc.szExeFile, 512,
>> str.GetBuffer(512),
>> 0);
>> CloseHandle(hSnap);
>> return str;
>> }
VVV> А чему, кстати, pid равен ?
VVV> Тут, похоже, просто то что первым попадается, то и возвращается.
VVV> Первым попадается твой процесс.
>> while (Process32Next(hSnap, &proc))
>> {
>> if (proc.th32ProcessID==pid){
>> GetFullPathName(proc.szExeFile, 512, str.GetBuffer(512),
>> 0);
>> CloseHandle(hSnap);
>> return str;
>> }
>> //m_List1.AddString(proc.szExeFile);
>> }
>> }
VVV> Просто закомментируй CloseHandle(hSnap); и return str в своем примере,
VVV> и посмотри под отладчиком что будет.
Если бы все так просто было :( Мне нужно по хэндлу окна узнать полное имя
приложения,
которому принадлежит это окно. И в первый раз я узнаю полное имя своего приложения.
Все
правильно выводится. Затем даю хэндлы других окон. По отладчику смотрел,
что находится
правильный экзешник, например KAV.exe, но GetFullPathName говорит, что это
приложение
находится там же, что и моя прога. Для моей программульки большая честь, что
Касперский
рядом с ней :), но это не так на самом деле.
VVV> А пример перечисления процессов, модулей, и.т.д. можно найти тут:
VVV> http://msdn.microsoft.com/library/en-us/perfmon/base/taking_a_snapshot_and_v
VVV> iewing_processes.asp
Хороший пример - он решил мою проблему, потому что в MODULEENTRY32.szExePath
сразу
содержится то, что мне нужно. Поэтому вопрос с GetFullPathName остается
чисто
риторическим.