Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
hacia
0 / 0 / 0
Регистрация: 19.11.2011
Сообщений: 3
#1

Как по дескриптору окна определить где на диске находится прога?

19.11.2011, 12:42. Просмотров 1355. Ответов 3
Метки нет (Все метки)

У меня такой вопрос. Как мне по хендлу(дескриптору) окна определить где на диске находится прога! Например: я запустил DOC файл, и найдя хендл(дескриптор) этого окна, мне нужно узнать откуда запущен этот файл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 12:42
Ответы с готовыми решениями:

Как по дескриптору определить размер окна в чужом приложении?
Здравствуйте! Друзья подскажите, как по дескриптору чужого окна можно...

Нужно определить границы внутренней области окна по дескриптору
Нужно определить координаты внутренней облости окна относительно всего экрана...

Как узнать ID процесса (PID) по дескриптору окна (Handle)?
АП. Интересует как узнать PID по Handle.

Как по дескриптору процесса получить hWnd порождённого этим процессом окна?
Как по дескриптору процесса получить hWnd порождённого этим процессом окна? ...

Как в RichTextBox определить где находится курсор?
Товарищи подскажите как определить где находится курсор в RichTextBox, или как...

3
noob
20.11.2011, 08:05 #2
Цитата Сообщение от hacia
У меня такой вопрос. Как мне по хендлу(дескриптору) окна определить где на диске находится прога! Например: я запустил DOC файл, и найдя хендл(дескриптор) этого окна, мне нужно узнать откуда запущен этот файл.
Ну во-первых запускается не doc-файл, а exe-файл редактора, который в свою очередь загружает документ. Зная Handle окна можно найти файл программы создавшей его.

А найти файл программы можно примерно так:
Delphi
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
// Для начала определяешь какому процессу принадлежит окно:
 
Var pProcID : ^DWORD;
begin
 GetMem (pProcID, SizeOf (DWORD));
 GetWindowThreadProcessId (WinHandle, pProcID);
end;
 
// а после этого используешь TProcessEntry32 примерно так:
 
function GetExeNameByProcID (ProcID : DWord) : String;
var
 ContinueLoop   : BOOL;
 FSnapshotHandle : THandle;
 FProcessEntry32 : TProcessEntry32;
begin
 FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
 
 FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
 
 ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
 
 Result := ''''
 while (Integer (ContinueLoop) <> 0) and (Result='''') do
 begin
  if FProcessEntry32.th32ProcessID = ProcID then
   Result := FProcessEntry32.szExeFile;
  ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
 end;
end;
 
// Не забудь в uses добавить Tlhelp32
Пример взят из delphi world...
hacia
0 / 0 / 0
Регистрация: 19.11.2011
Сообщений: 3
21.11.2011, 00:35  [ТС] #3
Я так понял, что нельзя узнть где находиться этот DOC файл?
0
noob
21.11.2011, 09:54 #4
Цитата Сообщение от hacia
Я так понял, что нельзя узнть где находиться этот DOC файл?
Ну во-первых нужно определиться что тебе нужно - "где на диске находится прога" или "где находиться этот DOC файл". Путь к документу можно получить средствами ворда - если, конечно, документ открыт именно вордом. Точнее сказать не могу. Помнится там была процедура возвращающая путь к документу. Поищи, в форуме это уже было вроде.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2011, 09:54

Как по дескриптору определить изменение курсора в чужих окнах?
Написал код перехвата вида курсора по дескриптору в локальном окне формы. Как...

Как определить, где в данный момент находится окно по оси X, Y
господа как определить где в данный момент находится окно по оси X,Y

Получить путь к .exe по дескриптору окна
wchar_t szFileName; DWORD pID; HANDLE hProcess; HWND hWnd =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru