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

Вниз

Word: запустить, проследить, узнать о результатах.   Найти похожие ветки 

 
Andy BitOff ©   (2005-07-11 10:39) [0]

Здравствуйте.
Незнаю в какую конференцию поместить этот вопрос, поэтому напишу здесь, а там пусть модератор решает куда уже дальше ее девать.

Значит задача в следующем:
Запустить некий документ Word, проследить когда он будет закрыт и получить информацию о том был ли он изменен или нет.

С запуском, понятно, проблем нет, а вот дальше... Даже незнаю с кого бока начать. Посоветуйте. Может у кого есть наработки.


 
Drakosha ©   (2005-07-11 11:39) [1]

у TWordApplication обрабатывай события onClose и onChange


 
Andy BitOff ©   (2005-07-11 12:46) [2]

Спасибо. Все прекрано работает.


 
B-S-G   (2005-07-11 19:16) [3]

function WinExecAndWait(Path: PChar; Visibility: Word): Word;
var
 InstanceID: THandle;
 Msg: TMsg;
begin
 InstanceID := WinExec(Path, Visibility);
 if InstanceID < 32 then { значение меньше чем 32 указывает на ошибку }
   WinExecAndWait := InstanceID
 else
   repeat
     while PeekMessage(Msg, 0, 0, 0, pm_Remove) do
     begin
       if Msg.message = wm_Quit then
         Halt(Msg.WParam);
       TranslateMessage(Msg);
       DispatchMessage(Msg);
     end;
   until
     GetModuleUsage(InstanceID) = 0;
 WinExecAndWait := 0;
end;

function ExecuteAndWait(FileName: string; HideApplication: boolean): boolean;
var
 StartupInfo: TStartupInfo;
 ProcessInfo: TProcessInformation;
 exitc: cardinal;
begin
 FillChar(StartupInfo, sizeof(StartupInfo), 0);
 with StartupInfo do begin
   cb := Sizeof(StartupInfo);
   dwFlags := STARTF_USESHOWWINDOW;
   wShowWindow := SW_SHOW;
 end;
 if not CreateProcess(nil, PChar(FileName), nil, nil, false,
   CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil,
   StartupInfo, ProcessInfo) then result := false
 else begin
   if HideApplication then begin
     Application.Minimize;
     ShowWindow(Application.Handle, SW_HIDE);
     WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
   end else
     while WaitforSingleObject(ProcessInfo.hProcess, 100) =
       WAIT_TIMEOUT do begin
       Application.ProcessMessages;
       if Application.Terminated
         then TerminateProcess(ProcessInfo.hProcess, 0);
     end;
   GetExitCodeProcess(ProcessInfo.hProcess, exitc);
   result := (exitc = 0);
   if HideApplication then begin
     ShowWindow(Application.Handle, SW_SHOW);
     Application.Restore;
     Application.BringToFront;
   end;
 end;
end;

function SwitchToProg(const Path: string): Boolean;
var
 SI: TStartupInfo;
 PI: TProcessInformation;
 ExitCode: Cardinal;
begin
 FillChar(SI, SizeOf(SI), 0);
 SI.cb := SizeOf(SI);

 Result := CreateProcess(nil, PChar(Path), nil, nil, False, 0, nil, nil,
   SI, PI);

 if Result then
 begin
   Application.MainForm.Hide;
   while GetExitCodeProcess(PI.hProcess, ExitCode) and
     (ExitCode = STILL_ACTIVE) do
     ; // ждем завершения, пустой цикл
   Application.MainForm.Show;
 end;
end;

procedure ShellExec(Sender: TObject);
var
 ProcInfo: PShellExecuteInfo;
begin
 (Sender as TControl).Enabled := False;
 GetMem(ProcInfo, SizeOf(ProcInfo^));
 with ProcInfo^ do
 begin
   Wnd := Handle;
   cbSize := SizeOf(ProcInfo^);
   lpFile := PChar("notepad.exe");
   lpParameters := nil;
   lpVerb := "open";
   nShow := SW_SHOW;
   fMask := SEE_MASK_DOENVSUBST or SEE_MASK_NOCLOSEPROCESS;
 end;
 try
   Win32check(ShellExecuteEx(ProcInfo));
   while not Application.Terminated and
     (WaitForSingleObject(ProcInfo.hProcess, 100) = WAIT_TIMEOUT) do
     Application.ProcessMessages;
 finally
   if ProcInfo.hProcess <> 0 then
     CloseHandle(ProcInfo.hProcess);
   Dispose(ProcInfo);
   (Sender as TControl).Enabled := True;
 end;
end;

Взял из Delphi World  http://delphiworld.narod.ru. (сейчас 5005 статей)



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

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

Наверх




Память: 0.48 MB
Время: 0.037 c
14-1120921148
Soft
2005-07-09 18:59
2005.07.31
Допускает ли Бог познание мира, а стало быть самого себя?


14-1121087569
oldman
2005-07-11 17:12
2005.07.31
Ни фига себе прикол!!!


1-1121237004
АМБ
2005-07-13 10:43
2005.07.31
Подключение Glyph


1-1121089569
Sergey210
2005-07-11 17:46
2005.07.31
Проблема с Drag&amp;Drop


1-1120482687
Антоныч
2005-07-04 17:11
2005.07.31
Построение графика в Excel через TExcelApplication