Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизПолучение полного пути к программе Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c