Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Получение .exe файла по дескриптору окна.   Найти похожие ветки 

 
x3{neon}   (2004-05-11 14:29) [0]

Здраствуйте Мастера! Подскажите пожалуйста, как из HWND окна получить путь к .exe файлу программы? Заранее благодарен.


 
Dimich1978 ©   (2004-05-11 19:40) [1]

function pip(id:Cardinal; var s:string):THandle ;
var

snap,h   : THandle;
me32   : TMODULEENTRY32;
begin
snap := 0;
try
snap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,id);
if snap <> 0 then begin
 me32.dwSize        := SizeOf(TMODULEENTRY32);
 if Module32First(snap, me32) then begin
       s:=(me32.szExePath);
       h:=ExtractIcon(hInstance,me32.szExePath,0);
       if h=0 then  h:=LoadImage(0, IDI_WINLOGO, IMAGE_ICON, LR_DEFAULTSIZE,
      LR_DEFAULTSIZE, LR_DEFAULTSIZE or LR_DEFAULTCOLOR or LR_SHARED); Result:=h;
  while Module32Next(snap, me32) do
 
 end;
end;
finally
CloseHandle(snap);
end;
end;


 
Игорь Шевченко ©   (2004-05-11 19:52) [2]

Для WinXP (Win2k, WinNT) - http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip


 
DVM ©   (2004-05-12 00:46) [3]

function _GetProcessFileNameByWindowHandle(Wnd: HWND): string;
var
 hProcess: THandle;
 PID: Cardinal;
 FileName: array [1..MAX_PATH] of char;
 PE: TProcessEntry32;
 Snap: Cardinal;
 OsVerInfo: TOSVersionInfo;
begin
 Result := "";
 GetWindowThreadProcessId(Wnd, @PID);
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
 OsVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
 if GetVersionEx(osVerInfo) then
   begin
     if OsVerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
       begin
         ZeroMemory(@Filename[1], SizeOf(Filename));
         GetModuleFileNameEx(hProcess, 0, @Filename[1], SizeOf(Filename));
         Result := FileName;
       end
     else
       begin
         Snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
         if Snap <> -1 then
           begin
             PE.dwSize:=SizeOf(PE);
             if Process32First(Snap, PE) then
               repeat
                 if PE.th32ProcessID = PID then Result := PE.szExeFile;
               until not Process32Next(Snap, PE);
           end;
       end;
   end;
 CloseHandle(hProcess);
end;



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
1-1086080080
Семен Сорокин
2004-06-01 12:54
2004.06.13
TFrame + XPStyle (XPManifest) => отрисовка на TFrame


14-1085311405
VMcL
2004-05-23 15:23
2004.06.13
Голосование "Образование программиста?"


14-1085568463
AlexG
2004-05-26 14:47
2004.06.13
На сайте злоумышленник!


3-1085013254
ROMshtain
2004-05-20 04:34
2004.06.13
Как определить что результат запроса null


1-1085728950
Delph
2004-05-28 11:22
2004.06.13
TStatusPanel