Привет ребята,
подскажите как открыть дерикторию (папку) с помощью ExecuteProcess? Или может просто с Process? Должно работать на Win, Linux, Mac.
Огромное спасибо!
Модератор: Модераторы
function Call_ShellExecute(H: THandle; Operation, FileName, Parameters, Directory: string; L6: LongInt): Variant;
{$IfNDef WINDOWS}
var
P: TProcess;
{$EndIf}
begin
{$IfDef WINDOWS}
Operation := UTF8ToSys(Operation);
FileName := UTF8ToSys(FileName);
Parameters := UTF8ToSys(Parameters);
Directory := UTF8ToSys(Directory);
Result := ShellExecute(H, PChar(Operation), PChar(FileName), PChar(Parameters), PChar(Directory), L6);
{$Else}
Result := 0;
P := TProcess.Create(nil);
try
P.ShowWindow := swoShowNormal;
case L6 of
SW_SHOW: P.ShowWindow := swoShow;
SW_MINIMIZE: P.ShowWindow:= swoMinimize;
SW_SHOWMAXIMIZED: P.ShowWindow := swoShowMaximized;
SW_SHOWMINIMIZED: P.ShowWindow := swoShowMinimized;
SW_SHOWDEFAULT: P.ShowWindow := swoShowDefault;
SW_SHOWNOACTIVATE: P.ShowWindow:= swoShowNoActivate;
SW_HIDE: P.ShowWindow:= swoHIDE;
SW_RESTORE: P.ShowWindow := swoRestore;
SW_SHOWNA: P.ShowWindow:= swoShowNA;
SW_SHOWMINNOACTIVE: P.ShowWindow:= swoshowMinNOActive;
end;
P.Options := [];
P.StartupOptions:=[suoUseShowWindow];
P.CurrentDirectory:= Directory;
if Parameters <> '' then FileName := FileName + ' ' + Parameters;
P.CommandLine := FileName;
P.Execute;
finally
P.Free;
end;
{$EndIf}
end;
var
filemanager: string;
begin
{$ifdef Windows}
filemanager = 'explorer';
{$else}
filemanager = 'thunar';
{$endif}
call_shellexecute(Form.Handel, 'Open', filemanager, DirectoryPath, '', SW_SHOW);
end;
uses
... LCLIntf;
begin
OpenDocument('/home/');
end.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24