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

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

Запуск программы, установленной в Виндоус по умолчанию


oldman ©   (2009-08-13 10:52:00) 

Надо открыть файл, предположим, .txt. (программно)
Ноя я не знаю, что установлено у пользователя - Блокнот, MSOffice, OpenOffice...
Что мне прописать в ShellExecute?

ЗЫ: В реестр лезть не хочется, да и тогда тоже мороки много.
Можно программно "кликнуть" по файлу и передать проблему системе?


wicked   (2009-08-13 13:09:00) [1]

кстати, рекомендую писать не
ShellExecute(0, 'open', PAnsiChar(OpenDialog1.FileName), nil, nil, SW_SHOW);

а
ShellExecute(0, nil, PAnsiChar(OpenDialog1.FileName), nil, nil, SW_SHOW);

потому, что действием по умолчанию может быть как раз и не open, а что-нибудь другое
а так мы даем системе знать, что мы именно хотим использовать действие по умолчанию


Anatoly Podgoretsky   (2009-08-13 12:16:00) [2]

> Alex_Ford  (13.08.2009 11:52:04)  [4]

Пока проверял - файл прекратил существование.


Alex_Ford   (2009-08-13 12:04:00) [3]


> O_o-очень интересно :)

да-да, только я немного поспешил.


if fileexists(extractfilepath(paramstr(0))+'file.txt') then.....


Дмитрий С   (2009-08-13 12:02:00) [4]


> if FileExists(paramstr(0))+'файл.txt' then...... else...
> ...

O_o-очень интересно :)


Alex_Ford   (2009-08-13 11:52:00) [5]

Здесь все просто.
Если это текстовый файл, то, применив вышеописанную функцию - система сама откроет файл. Если Word, Excel и другие, то также система сама все обработает.
Только не стоит забывать проверять файл на его существование if FileExists(paramstr(0))+'файл.txt' then...... else......


Ega23   (2009-08-13 10:56:00) [6]

procedure TForm3.Button1Click(Sender: TObject);
begin
 if not OpenDialog1.Execute then Exit;
 ShellExecute(0, 'open', PAnsiChar(OpenDialog1.FileName), nil, nil, SW_SHOW);
end;


DVM   (2009-08-13 10:55:00) [7]

ShellExecute(Handle, 'open', 'имя файла', nil, nil, SW_MAXIMIZE);


Дмитрий С   (2009-08-13 10:54:00) [8]

Сам ответил же.

uses ShellApi
+
ShellExecute


Наверх

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