Почему я не могу получить путь процесса, который создает окно рабочего стола с помощью getmodulefilenameex?
Почему я не могу получить путь процесса(полученного GetWindowThreadProcessId+OpenProcess), который создает окно рабочего стола (полученное GetDesktopWindow) с помощью GetModuleFileNameEx?
#include <stdio.h> #include <windows.h> #pragma comment (lib, "user32.lib") #include <Psapi.h> #pragma comment(lib,"Kernel32.lib") main(){ FILE *fp = fopen("C:/windowLog.txt", "a"); HWND desktopWindow=GetDesktopWindow(); fprintf(fp, "Handle of Desktop window is%x\n", (unsigned int)desktopWindow); CHAR dName[MAX_PATH] = { 0 }; GetWindowTextA(desktopWindow, dName, MAX_PATH); fprintf(fp, "Title of desktop window is %s\n", dName); GetClassName(desktopWindow, dName, MAX_PATH); fprintf(fp, "Desktop window class is %s\n", dName); DWORD pid = 0; GetWindowThreadProcessId(desktopWindow, &pid); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); CHAR path[260] = { 0 }; GetModuleFileNameEx(hProcess, NULL, path, 260); fprintf(fp, "The path of the process is %s\n\n", path); fclose(fp);
Я не могу получить путь от GetModuleFileNameEx.
Что я уже пробовал:
GetDesktopWindow + GetWindowThreadProcessId + OpenProcess + GetModuleFileNameEx
Richard MacCutchan
Пожалуйста, покажите свой код и объясните, что именно идет не так. Есть ли у вас правильные разрешения, установленные в вашем приложении?
quanhuang
Большое спасибо.Вот мой код.Пожалуйста, взгляните.
Richard MacCutchan
Запустив это через отладчик, GetWindowThreadProcessId возвращает 0. Таким образом, похоже, что вы не можете получить эту информацию. Это может быть ограничение Windows.
quanhuang
Большое спасибо!