![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить рабочий каталог, имя только 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.