Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Открыть папку


Автор: DriveSoftware 4.10.2003, 16:04
Приветик!

Как открыть папку с помощью функции CreateProcess,
т.к. надо знать Handle окна с этой папкой.

Автор: <Spawn> 4.10.2003, 16:19
а чем ShellExecute не нравится?

Код
ShellExecute(Handle, 'open',PAnsiChar(ExtractFilePath(Application.ExeName)),nil,nil, SW_SHOWNORMAL)

Автор: DriveSoftware 4.10.2003, 16:23
Мне нужно знать Handle открытого окна, а ShellExecute этого не дает!

Автор: p0s0l 5.10.2003, 19:31
Цитата
Как открыть папку с помощью функции CreateProcess,

Код
var
 si : TStartUpInfo;
 pi : TProcessInformation;
begin
 FillChar(si, sizeof(si), 0);
 si.cb := SizeOf(si);
 CreateProcess(nil, PChar('EXPLORER.EXE "C:\"'), nil, nil, false, 0, nil, nil, si, pi);
end;

Только так почему-то у меня не получилось узнать хэндл окна, хотя надо еще подумать.
Вот как я делал:
Код
var
 Handle : HWND;
 si : TStartUpInfo;
 pi : TProcessInformation;
 s : string;

 function fn1 (h : HWND; param : LPARAM) : boolean; stdcall;
 begin
   Handle := h;
   Result := false;
 end;

begin
 FillChar(si, sizeof(si), 0);
 si.cb := SizeOf(si);
 CreateProcess(nil, PChar('EXPLORER.EXE "C:\"'), nil, nil, false, 0, nil, nil, si, pi);
 repeat
   Handle := HWND(-1);
   EnumThreadWindows(pi.dwThreadId, @fn1, 0);
 until Handle <> HWND(-1);
 SetLength (s, GetWindowTextLength(Handle));
 GetWindowText(Handle, @s[1], Length(s));
 Caption := s;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)