// Создаём область памяти.
PVOID Info = NULL; INT Length = 1024;
DosAllocMem ((PPVOID) &Info, Length, PAG_COMMIT | PAG_READ | PAG_WRITE);

// Узнаём свойства приложения.
ULONG Rc = DosQuerySysState (QS_PROCESS, 0, Process_id, 0, Info, Length);

// Разбираем их и узнаём имя файла приложения.
if (Rc == NO_ERROR) 
{
  PQSPTRREC Top = (PQSPTRREC) Info; PQSPREC Process_record = Top->pProcRec;

  CHAR Exe_name[SIZE_OF_PATH] = "";

  if (Process_record->RecType == QS_PROCESS)
    if (Process_record->pid == Process_id)
      DosQueryModuleName (Process_record->hMte, SIZE_OF_PATH, Exe_name);

  ...

}

// Освобождаем память.
DosFreeMem (Info);