Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

Как по хендлу окна получить путь к екзешнику   Найти похожие ветки 

 
Reanimator   (2003-11-30 23:28) [0]

Народ, помогите! Имеем хендл окна, надо получить путь к exe файлу которому это окно пренадлежит.
Порылся тут в поиске и нашол такой код

uses tlHelp32;
function GetFilePath(const WinH: THandle): String;
var
SnapshotH: THandle;
PE32: TProcessEntry32;
PrId: Cardinal;
begin
Result := "";
SnapshotH := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if SnapshotH = -1 then Exit;
PE32.dwSize := SizeOf(PE32);
GetWindowThreadProcessID(WinH, PrId);
if Process32First(SnapshotH, PE32) then
repeat
if PE32.th32ProcessID = PrId then
begin
Result := PE32.szExeFile;
Break;
end;
until not Process32Next(SnapshotH, PE32);
CloseHandle(SnapshotH)
end;

Но он возвращает только имя екзешника, а мне надо полный путь.
Также наткнулся на такой код

function GetWinPath(wnd:hwnd):String;
var s: array[0..MAX_PATH]of char;
begin
fillchar(s, sizeof(s), #0);
GetWindowModuleFileName(wnd, s, sizeof(s));
GetWinPath:=s;
end;

Но он возвращает путь только к окну моей програмы, к любому другому возвращает пустую строку.

Дайте дельный совет плиз. Подскажите как решить траблу.


 
fuf   (2003-11-30 23:46) [1]

Такой вопрос есть в орешнике...


 
Reanimator   (2003-11-30 23:58) [2]

2 fuf
Да, я его уже читал.
А что нибуть более толковое сказать можеш?


 
Dimaxx   (2003-12-01 01:37) [3]

GetModuleFilename


 
Reanimator   (2003-12-01 11:33) [4]

Dimaxx © (01.12.03 01:37)
//GetModuleFilename
с ним таже трабла что и GetWindowModuleFileName


 
ZrenBy   (2003-12-01 11:36) [5]

http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=34446


 
Reanimator   (2003-12-01 11:47) [6]

Спасибо все работает.


 
имя   (2003-12-01 12:08) [7]

Удалено модератором


 
Xtz   (2003-12-03 00:25) [8]

Сори за то что пропагандирую свою модулю, но всетаки смори в кладовке модуль ExApi а если в лом качать то вот те код оттуда работает стопудова показывает полный путь И имя файла вот:

<Code/>
Function ExGetFileName(Handle:Thandle):String;
var dPID: dWord;
hHandle: THandle;
begin
GetWindowThreadProcessId(Handle,@dPID);
SetLength (Result, MAX_PATH);
hHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, True, dPID);
if GetModuleFileNameEx(hHandle, 0, pchar (Result), MAX_PATH) > 0
then SetLength (Result, StrLen (PChar (Result)));
closehandle(hHandle);
end;

кстати в орешнике мой вопрос :))



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

Форум: "WinAPI";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.03 c
3-16052
kvit
2004-01-12 16:04
2004.02.06
проблеммы с trigger ом


8-16521
sergn
2003-10-02 21:25
2004.02.06
Зеркальный вывод текста


1-16500
SVS-12345678
2004-01-27 14:32
2004.02.06
vcf132.ocx и InstallShield Express Borland Limited Edition


1-16374
Pasha_
2004-01-23 22:34
2004.02.06
Class TPanel not found


14-16732
Baloo
2004-01-16 11:54
2004.02.06
Картинка про Дельфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский