Иногда я люблю почитать рассылку "RusFAQ.ru: Программирование на Delphi". Ну, чисто чтобы похихикать, можно даже посмотреть примеры в этом же разделе. Но в данном случае хочется привести пример того, как люди абсолютно не желают понимать, что от них требуется, но все равно рвутся в бой с фанатизмом последователей секты Глобальной Термоядерной Войны. Итак, читаем:
Здравствуйте, уважаемые эксперты.
Вопрос такой: как из Delphi открыть указанный файл закрепленным по умолчанию в системе приложением для документов Microsoft Word?
Спасибо за ответы
Вроде бы понятный вопрос, нормально сформулированный, понимается вполне однозначно. Так?
Нет, не так! Смотрим ответы.
Отвечает: Ranmasao
Здравствуйте, Alexander L.!
есть несколько способов: например можно через ShellExecute вызвать Word с именем файла в качестве параметра, а можно через OLE запустить Word и через OLE открыть в нем файл. Причем с OLE есть два способа: можно задействовать интерфейс через переменную типа OLEVariant, а можно использовать OLE-компонент, входящий в стандартную поставку Delphi (находится кажется на палитре "OLE servers").
Отвечает: Drbear
Здравствуйте, Alexander L.!
Попробуйте использовать ShellExecute.
Пример кода в приложении, на форме кнопка и OpenDialog.
Приложение:
uses ..., ShellAPI;
...
procedure TForm1.Button1Click(Sender: TObject);
var
ach: PAnsiChar;
begin
if OpenDialog1.Execute then
begin
ach := PAnsiChar(OpenDialog1.FileName);
ShellExecute(handle, nil, ach, nil, nil, SW_MAXIMIZE);
end;
end;
Хоть один адекватный...
Отвечает: Дегтярев Антон Александрович
Здравствуйте, Alexander L.!
В uses допишите ComObj
var
MsWord : Variant;
begin
MsWord := CreateOleObject('Word.Application');
MsWord. Documents.Open('путь до файла');
end;
Если вы будете работать через OleObject любую операцию можно посмотреть через макросы.
Вот так вот. Как мы видим, большинство считает необходимым не помочь спрашивающему, а задвинуть что-то на тему, которую они придумали за спрашивающего сами. Не надо так делать.
Для тех, кто не понял.
Фраза "открыть указанный файл закрепленным по умолчанию в системе приложением для документов Microsoft Word" ни разу не означает, что надо запустить Ворд. Она обозначает, что надо открыть файл программой, которую указал у себя в системе пользователь. Это может быть OpenOffice, MS Write :), у некоторых извращенцев - ACDSee. Так что - на хуй ворд. ShellExecute(0, nil, PChar(УказанныйФайл), nil, nil, SW_SHOWNORMAL) - и всё.