Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
1-1121191737
SpyBoy
2005-07-12 22:08
2005.07.31
Hook или как?


4-1118041358
ilya39
2005-06-06 11:02
2005.07.31
code page в консольном приложении


1-1121233573
Jay1982
2005-07-13 09:46
2005.07.31
WWW


14-1120073358
kaif
2005-06-29 23:29
2005.07.31
Любопытная статистика отстоя


1-1121078051
nastya
2005-07-11 14:34
2005.07.31
TMessage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский