Russian Qt Forum

Qt => Общие вопросы => Тема начата: __Heaven__ от Май 05, 2015, 11:07



Название: PWD других процессов
Отправлено: __Heaven__ от Май 05, 2015, 11:07
Привет, друзья!
Хочу узнать рабочую директорию определённого процесса, запущенного извне.
Данный мануал (http://stackoverflow.com/questions/14018280/how-to-get-a-process-working-dir-on-windows) не подошёл. Какая-то нестыковочка в членах upp...
Спасибо!


Название: Re: PWD других процессов
Отправлено: Bepec от Май 05, 2015, 11:38
Я так понимаю винда? :) Ну, ляпну, как обычно говорит Igors, без смысла и не в тему :D

Код:
DWORD aProcesses[1024], cbNeeded, cProcesses;

f ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;

cProcesses = cbNeeded / sizeof(DWORD);

for ( i = 0; i < cProcesses; i++ )
if( aProcesses[i] != 0 )
{

TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
TCHAR szPathName[MAX_PATH] = TEXT("<unknown>");
// Get a handle to the process.

HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i]);
// Get the process name.

if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;

if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
{
// имя
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) );
// путь
GetModuleFileNameEx(hProcess, hMod, szPathName, sizeof(szPathName)/sizeof(TCHAR));
qDebug() << QString::fromStdWString(szPathName);
}
}


Название: Re: PWD других процессов
Отправлено: __Heaven__ от Май 05, 2015, 12:15
Верес, спасибо. Кое-что почерпнул для себя из этого примера.
Но это не совсем то. Да, целевая платформа винда (ошибся топиком, к Qt нет отношения).
Пример выше выводит путь к файлу запуска процесса. Меня же интересует текущая рабочая директория процесса.


Название: Re: PWD других процессов
Отправлено: __Heaven__ от Май 05, 2015, 14:54
Гляжу в сторону tlist.exe из комплекта WDK