Il seguente esempio ha restituito in modo affidabile il nome del processo associato alla finestra attiva, ma non funziona con le nuove app moderne/universali perché restituisce il nome di un processo di supporto WWAHost.exe su Windows 8 e ApplicationFrameHost.exe su Windows 10 anziché il nome dell'app.Nome del processo per la finestra attiva in Windows 8/10
HWND active_window = GetForegroundWindow();
GetWindowThreadProcessId(active_window, &active_process_id);
HANDLE active_process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, active_process_id);
GetProcessImageFileName(active_process, image_name, 512);
Con Windows 10 l'ApplicationFrameHost.exe è il processo che crea le maniglie delle finestre ed è ciò che viene restituito da GetWindowThreadProcessId(), c'è un altro API Win32 che può essere utilizzato per ottenere il processo attivo di applicazione universale che è attivo?
provato anche utilizzando GetApplicationUserModelId() e GetPackageFullName() senza successo come tornano APPMODEL_ERROR_NO_APPLICATION e APPMODEL_ERROR_NO_PACKAGE rispettivamente perché l'handle active_process è solo il processo di supporto e non il processo dell'applicazione attiva.
Qualsiasi altra API da utilizzare per ottenere il nome del processo di un'applicazione moderna/universale data la finestra della finestra, o altrimenti capire il nome del processo dell'app universale è attiva.
Grazie in anticipo!
Hai provato ['QueryFullProcessImageName'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms684919%28v=vs.85%29.aspx)? – theB
Sì e restituisce ancora un percorso a ApplicationFrameHost.exe, poiché il processo_handle restituito è il processo di supporto che ha creato la finestra. –