powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как узнать имя файла по дескриптору его окна (32-бит и 64-бит)?
3 сообщений из 3, страница 1 из 1
Как узнать имя файла по дескриптору его окна (32-бит и 64-бит)?
    #39978674
crossa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла задача получить имя файла и путь к нему, зная дескриптор (хэндл) его окна. Раньше использовал такой код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
uses PSAPI, SysUtils;

function GetModulesFromProcessID(ProcessID: THandle): String;
var hProcess: THandle;
  NeededBytes: DWORD;
  phModule: PDWORD;
  ModuleName: array[0..1024] of Char;
begin
  Result := '';
  hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessID);
  if hProcess <> 0 then
  begin
    try
      phModule := nil;
      if EnumProcessModules(hProcess, phModule, 0, NeededBytes) then
      begin
        GetMem(phModule, NeededBytes);
        try
          if EnumProcessModules(hProcess, phModule, NeededBytes, NeededBytes) then
          begin
               if GetModuleFileNameEx(hProcess, phModule^, @ModuleName, SizeOf(ModuleName)) > 0 then
                  Result:=ModuleName;
          end;
        finally
          FreeMem(phModule);
        end;
      end;
    finally
      CloseHandle(hProcess);
    end;
  end;
end;

function GetModulesFromWindowHandle(hWND: HWND): String;
var ProcessID: THandle;
begin
  Result := '';
  if GetWindowThreadProcessId(hWND, ProcessID) <> 0 then 
     Result := GetModulesFromProcessID(ProcessID);
end;


Но при использовании этой функции в 32-битной программе удастся узнать имя файла только для запущенных 32-битных приложений. Есть ли простой и быстрый способ получать полные имена файлов для 32-битных и 64-битных приложений, зная дескрипторы их окон?
...
Рейтинг: 0 / 0
Как узнать имя файла по дескриптору его окна (32-бит и 64-бит)?
    #39978675
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crossa,

а ошибку-то какую возвращает?
...
Рейтинг: 0 / 0
Как узнать имя файла по дескриптору его окна (32-бит и 64-бит)?
    #39978676
crossa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, уже нашел работающее решение:
https://stackoverflow.com/questions/22285024/how-to-get-a-systems-process-path-from-pid-in-a-64-bit-system/22286210#22286210
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как узнать имя файла по дескриптору его окна (32-бит и 64-бит)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]