Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.23;
Скачать: CL | DM;

Вниз

Как указать в ShellExecute путь к системному катклогу?   Найти похожие ветки 

 
Developerr ©   (2003-12-08 15:51) [0]

Уважаемые мастера, подскажите, пожалуйста, такую вещь:
Сохраняю файл из F1Book в каталог Винды \Temp\Report.xls

var Windir : String;
WindirP : PChar;
Res:byte;
begin
WinDirP := StrAlloc(MAX_PATH);
Res := GetWindowsDirectory(WinDirP, MAX_PATH);
WinDir := StrPas(WinDirP);
F1Book1.Write(WinDir+"\Temp\Report.xls", F1FileExcel97);
ShellExecute(Handle,nil,WinDir+"\Temp\Report.xls",nil,nil,SW_RESTORE);


Все хорошо, только вот не пойму как запустить потом этот файл.
Этот код не подходит, ошибка выскакивает.
ShellExecute(Handle,nil,WinDir+"\Temp\Report.xls",nil,nil,SW_RESTORE);

Поностью прописывать путь не всегда срабатывает, т.к. каталог Винды может по разному называться (Windows, Winnt) и вообще быть на разных дисках, в случае, когда установлено 2 ОС.

Как указать в ShellExecute путь к системному какталогу?
Или как по другому запустить файл?

Спасибо.


 
Anatoly Podgoretsky ©   (2003-12-08 16:13) [1]

Предпоследний параметр


 
Александр из Минска ©   (2003-12-08 16:19) [2]

Проще возьми (программно) полный адрес системной папки Темп.


 
Stas ©   (2003-12-08 16:52) [3]

uses Registry;
var R:TRegistry;Dir:String;
begin
R:=TRegistry.Create; {создаем экземпляр объекта}
R.RootKey:=HKEY_LOCAL_MACHINE;
Dir:=R.Readstring("SystemRoot");
...


 
Developerr ©   (2003-12-08 16:55) [4]


> Anatoly Podgoretsky

Что предпоследний параметр?


> Александр из Минска ©

Каким образом?

To All
Если можно напишите пример.


 
Anatoly Podgoretsky ©   (2003-12-08 17:07) [5]

"Как указать в ShellExecute путь к системному какталогу?"

Его указать в предпоследнем параметре, а получить с помощью GetSystemDirectory


 
Developerr ©   (2003-12-08 17:09) [6]


> Stas ©

И что? Все по прежнему, не извлекается.


> uses Registry;
> var R:TRegistry;Dir:String;
> begin
> R:=TRegistry.Create; {создаем экземпляр объекта}
> R.RootKey:=HKEY_LOCAL_MACHINE;
> Dir:=R.Readstring("SystemRoot");

Ни так:
ShellExecute(Handle,nil,"\Temp\Report.xls",nil,nil,SW_RESTORE);

Ни так:
ShellExecute(Handle,nil,Dir+"\Temp\Report.xls",nil,nil,SW_RESTORE);


 
Developerr ©   (2003-12-08 17:12) [7]


> Anatoly Podgoretsky ©

А пример, можно? Спасибо.


 
Developerr ©   (2003-12-08 18:00) [8]


> Anatoly Podgoretsky ©

ShellExecute(Handle,nil,"Report.xls",nil,GetSystemDirectory(WinDirP, MAX_PATH),SW_RESTORE);

Так не прокатывает. Пишет Incompatible types: "Cardinal" and "PAnsiChar".


 
Александр из Минска ©   (2003-12-08 23:47) [9]

Вот так берется Темп: (только я сам не проверял)
http://delphimaster.net/view/7-1066891822/


 
Developerr ©   (2003-12-09 10:19) [10]

Да, путь берется все работает. Отдельно и путь к папке винды можно найти. А вот как указать в ShellExecute, чтобы файл запускался именно из папки Temp?


 
Александр из Минска ©   (2003-12-10 16:00) [11]


> Developerr

То есть нужно просто запустить файлик, находящийся в папке Темп??? Так подойдет?
ShellExecute(Handle, "open", PChar(Путь_к_Темп_без_слэша+"\Report.xls"), nil, nil, SW_SHOW);



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

Текущий архив: 2003.12.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
9-75066
Sword-Fish
2003-06-03 15:05
2003.12.23
Текстуры


1-75238
Борец Анатолий
2003-12-10 16:21
2003.12.23
Memo-поле


9-75069
X-RayMan
2003-06-01 20:03
2003.12.23
Перспектива...


3-75088
Sacred
2003-11-30 00:28
2003.12.23
Автозаполнение!


4-75443
Nick_Omsk
2003-10-29 19:50
2003.12.23
Как сделать независимую форму и невидимую в TaskBar