Вот код который получает полный путь к exe для активного окна:
from win32api import OpenProcess, CloseHandle
from win32gui import GetForegroundWindow
from win32process import GetWindowThreadProcessId, EnumProcessModules, GetModuleFileNameEx
import win32con
class SafeProcess(object):
def __init__(self, pid, flags=win32con.PROCESS_ALL_ACCESS):
self.__pid = pid
self.__flags = flags
self.__handle = None
def __enter__(self):
self.__handle = OpenProcess(self.__flags, False, self.__pid)
return self.__handle
def __exit__(self, type, value, traceback):
if not isinstance(value, Exception):
CloseHandle(self.__handle)
active_pid = GetWindowThreadProcessId(GetForegroundWindow())[1]
with SafeProcess(active_pid) as process:
modules = EnumProcessModules(process)
for mod in modules:
mod_name = GetModuleFileNameEx(process, mod)
if mod_name.endswith('.exe'):
print '{:08X} {}'.format(mod, mod_name)
Обратите внимание, что доступ с PROCESS_ALL_ACCESS может быть не доступен для некоторых процессов
(минимально - нужны PROCESS_VM_READ + PROCESS_QUERY_INFORMATION) или повышать привилегии.