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

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

Запуск файлов Word Excel и т.д. [D7, WinXP]


sergg ©   (2005-05-24 18:27:00) 

Уважаемые мастера!
мне нужно запускать из программы файлы Word, Excel, тхт и др форматов, подскажите пожалуйста как это правильно сделать


KSK   (2005-05-25 13:06:00) [1]

в uses добавить
 ShellAPI

function ShellExecAndWait(const FileName: string; const Parameters: string;
const Verb: string; CmdShow: Integer): Boolean;
function PCharOrNil(const S: AnsiString): PAnsiChar;
begin
  if Length(S) = 0 then
    Result := nil
  else
    Result := PAnsiChar(S);
end;
var
Sei: TShellExecuteInfo;
Res: LongBool;
Msg: tagMSG;

begin
FillChar(Sei, SizeOf(Sei), #0);
Sei.cbSize := SizeOf(Sei);
Sei.fMask := SEE_MASK_DOENVSUBST or SEE_MASK_FLAG_NO_UI or
  SEE_MASK_NOCLOSEPROCESS or
  SEE_MASK_FLAG_DDEWAIT;
Sei.lpFile := PChar(FileName);
Sei.lpParameters := PCharOrNil(Parameters);
Sei.lpVerb := PCharOrNil(Verb);
Sei.nShow := CmdShow;
Result := ShellExecuteEx(@Sei);
if Result then
begin
  WaitForInputIdle(Sei.hProcess, INFINITE);
  while (WaitForSingleObject(Sei.hProcess, 10) = WAIT_TIMEOUT) do
  begin
    repeat
      Res := PeekMessage(Msg, Sei.Wnd, 0, 0, PM_REMOVE);
      if Res then
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    until (Res = False);
  end;
  CloseHandle(Sei.hProcess);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
'к примеру указывешь  файл www
ShellExecAndWait('c:\www.rtf', '', '', SW_SHOW);
 
end;


sergg   (2005-05-25 13:00:00) [2]

Спасибо всем, но ShellExecute весьма удобнее всего остального ;)


nsg   (2005-05-25 08:59:00) [3]

А можно и так.
В uses добавить ComObj
MyXL := CreateOleObject('Excel.Application');// Создаем обьект EXCEL
XL.WorkBooks.Add;// новый документ
MyXL.Visible := true;//делаем его видимым
MyXL.WorkBooks[1].WorkSheets[1].Cells[1, 1] := 'Этот документ создан моей супер программой...';// эту строчку можно не писать


Virgo_Style   (2005-05-24 19:41:00) [4]

MalkoLinge ©   (24.05.05 18:33) [1]

imho, удобнее использовать ShellExecute...


MalkoLinge   (2005-05-24 18:33:00) [5]

createprocess +F1


Наверх

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