Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить рабочий каталог, имя только handle. [D7, WinXP]


demonyator ©   (2003-05-25 21:07:00) 

С помощью следующей функции вытягиваю .exe из handle, но надо ещё и узнать в какой директории он находится.... может кто знает где копать?

Вот моя функция:
Function GetExeFromHandle(var Hand:LongInt):String;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
AProcessID : DWORD;
begin
result :="";
GetWindowThreadProcessID(Hand,AProcessID);
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do begin
if AProcessID=FProcessEntry32.th32ProcessID then Result:=FProcessEntry32.szExeFile;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;


demonyator   (2003-05-26 18:43:00) [1]


> VMcL
ничего.


demonyator   (2003-05-26 18:38:00) [2]

... иногда поражаешься красоте и простоте всего этого, но бывает, что поражаться приходится сложности написания простых вещей...


VMcL   (2003-05-26 14:37:00) [3]

>VMcL © (26.05.03 14:32)

С NTQuerySystemInformation я лоханулся. Почитай что-нибудь типа этого http://msdn.microsoft.com/library/en-us/perfmon/base/about_psapi.asp


VMcL   (2003-05-26 14:32:00) [4]

>Song © (25.05.03 22:41)

Путь возвращается только в Win9x. В Win2K+ только имя файла без пути. Если мне не изменяет склероз, в NT-шках нужно юзать NTQuerySystemInformation.


demonyator   (2003-05-26 01:58:00) [5]


> МДа..

Этот код не подходит... если запустить, к примеру, Windows Commander и прописать Lib := LoadLibrary("wincmd32.exe") - эта функция просто вернёт путь к моей проге.


demonyator   (2003-05-26 01:00:00) [6]


> Song
Path and filename of the executable file for the process.
то то и оно, что только fileName и никакого path :( Обманул нас дядя Билли


jack128   (2003-05-25 23:29:00) [7]

Song © (25.05.03 22:41)
Я тоже на такое наткнулся,в хелпе неправильно написано.


МДа..   (2003-05-25 22:53:00) [8]

Ну и, разумеется, ExtractFilePath.. Если правильно понял.


МДа..   (2003-05-25 22:44:00) [9]

А так не потянет?

procedure TForm1.Button1Click(Sender: TObject);
var Lib: THandle;
begin
Lib := LoadLibrary("explorer.exe");
Edit1.Text := GetModuleName(Lib);
FreeLibrary(Lib)
end;


Song   (2003-05-25 22:41:00) [10]

Из справки по Process32First/Next:

szExeFile

Pathand filename of the executable file for the process.


Наверх

Титульная страница Поиск, карта сайта Написать письмо