Четверг, 05.12.2024, 23:11 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
Окна windows
AdamasS-98Дата: Суббота, 21.12.2013, 18:08 | Сообщение # 1
Был не раз
Зарегистрирован: 26.10.2013
Группа: Пользователи
Сообщений: 8
Статус: Offline
Как узнать полный путь активного окна помогите пожалуйста!

DimasS
 
xXxSh@dowxXxДата: Суббота, 21.12.2013, 21:19 | Сообщение # 2
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Цитата AdamasS-98 ()
Как узнать полный путь активного окна помогите пожалуйста!


Уточните пожалуйста, быть может Вы имели ввиду полный путь до папки с файлом который запустил окно, так?


Сообщение отредактировал xXxSh@dowxXx - Суббота, 21.12.2013, 21:19
 
AdamasS-98Дата: Воскресенье, 22.12.2013, 11:11 | Сообщение # 3
Был не раз
Зарегистрирован: 26.10.2013
Группа: Пользователи
Сообщений: 8
Статус: Offline
1) получить hwnd активного окна через GetActiveWindow()
2) получаешь идентификатор процесса, передавая полученный hwnd в GetWindowThreadProcessId
3) OpenProcess чтобы получить handle процесса с найденным идентификатором (id)
4) GetProcessImageFileName - получаешь имя процесса по его HANDLE
5) CloseHandle - закрываешь handle процесса

Помогите переделать это в код на паскале, пожалуйста!!!


DimasS
 
FeniXДата: Воскресенье, 22.12.2013, 18:07 | Сообщение # 4
Был не раз
Зарегистрирован: 08.05.2013
Группа: Пользователи
Сообщений: 8
Статус: Offline
Сделать это очень легко.
Достаточно написать одну функцию.
Вот пример:
Сама функция получения пути
Код

Function HandleToFullPath(H: HWND): String;
Var
Pid:Cardinal;
M: TModuleEntry32;
HSnapshot: THandle;
Begin
Result:='';
GetWindowThreadProcessId(H,@Pid);
HSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Pid);
If HSnapshot=-1 Then
Exit;
M.DwSize:=SizeOf(TModuleEntry32);
If Module32First(HSnapshot,M) Then
Result:=M.SzExePath;
CloseHandle(HSnapshot);
End;


Ну и теперь получаем активное окно и берём из него полный путь
Код

var
h:hwnd;
s:string;
begin
h:=GetForeGroundWindow;
if h <> 0 then
begin
s:=HandleToFullPath(h);
end;
end;


Надеюсь помог.
 
AdamasS-98Дата: Понедельник, 23.12.2013, 20:17 | Сообщение # 5
Был не раз
Зарегистрирован: 26.10.2013
Группа: Пользователи
Сообщений: 8
Статус: Offline
Спасибо

DimasS
 
FeniXДата: Понедельник, 23.12.2013, 20:25 | Сообщение # 6
Был не раз
Зарегистрирован: 08.05.2013
Группа: Пользователи
Сообщений: 8
Статус: Offline
Для спасибо есть кнопка smile
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz