Piraisudan Ответов: 1

Как получить имя файла образа родительского процесса с помощью функции win32?


Привет,

Мне нужно получить точное имя родительского процесса. Я подробно объясню это на следующем примере,

Пример:

Имя родительского процесса : MyApp

Я попробовал использовать "GetModuleBaseName- функция, но она возвращается "myapp.exe".

С "GetModuleFileNameEx" функция, она возвращает "(путь)/myapp.exe"

С "GetProcessImageFileName" функция, она возвращает "(путь)/myapp.exe"


Но мне нужно точное название процесса -Мой друг"- Как это сделать?

Что я уже пробовал:

Пример:

Имя родительского процесса : MyApp

Я попробовал использовать "GetModuleBaseName- функция, но она возвращается "myapp.exe".

С "GetModuleFileNameEx" функция, она возвращает "(путь)/myapp.exe"

С "GetProcessImageFileName" функция, она возвращает "(путь)/myapp.exe"

Richard MacCutchan

Значения, возвращаемые этими вызовами функций, являются точными именами процессов. Я предполагаю, что MyApp это имя класса в исходном коде, которое не имеет никакого отношения к имени процесса.

1 Ответов

Рейтинг:
1

Rick York

Вы почти на месте. Сначала вызовите GetModuleBaseName. Затем вызовите PathFindExtension, и это вернет указатель на часть ".exe". Поместите нулевой символ по этому адресу, и вы останетесь с MyApp.


Piraisudan

Привет @Rick-York, я попробовал использовать GetModuleBaseName и PathFindExtension. Но функция PathFindExtension возвращает то же значение, которое мы передали из функции GetModuleBaseName. Как я могу получить это точное имя файла изображения родительского процесса? Чего мне не хватает в приведенном ниже примере?


Пример:

if (GetModuleBaseName(hProcess, NULL, lpBaseName, MAX_PATH))
{
//
}
if (PathFindExtension(lpBaseName))
{
//
}