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

Вниз

Получение полного пути к программе   Найти похожие ветки 

 
Esu ©   (2002-08-19 19:44) [0]

Вот такая функция позвращает только имя файла но не путь к нему, хотя в дельфовом helpе написано:
"
szExeFile

Path and filename of the executable file for the process.
"

function GetExeFileName(Wnd: HWND): String;
var
ProccessID: THandle;
hSnapShot: THandle;
ProcessEntry32: TProcessEntry32;
begin
Result:= "";
GetWindowThreadProcessId(Wnd, @ProccessID);
hSnapShot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
ProcessEntry32.dwSize:= SizeOf(TProcessEntry32);
if Process32First(hSnapShot, ProcessEntry32) then
repeat
if ProcessEntry32.th32ProcessID = ProccessID then
Result:= String(ProcessEntry32.szExeFile);
until Process32Next(hSnapShot, ProcessEntry32) = False;
finally
CloseHandle(hSnapShot);
end;
end;

Заранее благодарен.


 
kima ©   (2002-08-19 19:50) [1]

как насчет ExtractFilePath(Application.ExeName);?


 
Esu ©   (2002-08-19 19:59) [2]

Никак поскольку собственно мне и нужен Application.ExeName (как из него что получить уж разберусь). Только для другого приложения (не моего).


 
Esu ©   (2002-08-19 21:46) [3]

up


 
kima ©   (2002-08-19 21:50) [4]

сори не понял...


 
-= Like =-   (2002-08-19 21:55) [5]

Application.ExeName - возвращает полный путь и имя приложения.
ExtractFilePath(Application.ExeName) - возвращает только путь.

Непонятно, зачем ты используешь такую громоздкую процедуру?


 
alena.svt ©   (2002-08-19 22:23) [6]

А вот так попробуй.
Result:= IncludeTrailingBackSlash(ExtractFilePath(String(ProcessEntry32.szExeFile)))+String(ProcessEntry32.szExeFile);


 
Esu ©   (2002-08-20 16:56) [7]


> -= Like =-

Потому что мне нужно узнать не полный путь к своей программе, а полный путь к программе которая породила окно с данным HWND.

alena.svt

У меня ProcessEntry32.szExeFile = ("F","a","r",".","e","x","e", #0)

Спасибо всем проявившим желание помочь :)


 
Esu ©   (2002-08-20 17:05) [8]

Для справки эта функция нормально работает под win9x, под NT проблема. Возможно нужны какие-то права.


 
Игорь Шевченко ©   (2002-08-20 17:23) [9]


> Потому что мне нужно узнать не полный путь к своей программе,
> а полный путь к программе которая породила окно с данным
> HWND.


GetWindowModuleFileName ?


 
alena.svt ©   (2002-08-20 19:12) [10]

Если вы вначале говорили что все выводиться
То есть например если ваша функция не бита то
Result:= String(ProcessEntry32.szExeFile);
Label.Capton:=Result;
И в лабеле должно было быть написано например Far.exe
Я же вам дала
ПроверитьСлеш(Путь к файлу)+ имя файла
Если у вас функция рабочая то проблем бы не было.
И прислушайтесь к совету Игорь Шевченко © (20.08.02 17:23)


 
Esu ©   (2002-08-21 14:57) [11]


> alena.svt

Дело в том что функция работает не так как ожидается. Тоеть возвращает far.exe, а не c:\...\far.exe

> Игорь Шевченко

Самое интерестное что работает нормально только для моего процесаа, а для остальных отображает caption.

Видимо нужно получить некоторые права для просмотра такой информации.



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

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

Наверх




Память: 0.49 MB
Время: 0.02 c
8-3526
Иван
2002-04-27 00:43
2002.09.02
Текст в Bitmap


4-3654
polygon
2002-06-25 21:58
2002.09.02
Handle процесса и командная строка


1-3516
TBeginner
2002-08-21 14:20
2002.09.02
Class


4-3676
МитяЙ2
2002-06-20 14:27
2002.09.02
Временная папка


7-3648
DeMoN-777
2002-06-18 14:13
2002.09.02
Ждущий режим в WinNT 2000 XP