Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   RunProcess ohne EXE sondern mit Datei? (https://www.delphipraxis.net/74566-runprocess-ohne-exe-sondern-mit-datei.html)

Sharky 5. Aug 2006 10:26


RunProcess ohne EXE sondern mit Datei?
 
Hai ihr,

ich möchte aus meiner Anwendung heraus eine Datei öffnen und warten bis das Programm mit dem die Dateigeöffnet wurde wieder beendet ist.

Ich dachte das könnte ich mit Luckies RunProcess aus diesem Beitrag machen. Aber das geht wohl nicht.

Der Hintergrund ist dieser:
Die "Datei" wird aus einer Datenbankgeholt, dann in ein TMP-Verzeichniss geschrieben. Jetzt soll sie mit der verknüpften Anwendung geöffnet werden und danach wieder (wenn sie sich geändert hat) in die Datenbank geschrieben werdern.

Hat da einer von euch eine Idee?

fwsp 5. Aug 2006 10:33

Re: RunProcess ohne EXE sondern mit Datei?
 
für die öffnung einer datei mit dem standard-programm ist shellexecute vorgesehen.

3_of_8 5. Aug 2006 10:42

Re: RunProcess ohne EXE sondern mit Datei?
 
Genauer:

ShellExecute(Handle, 'open', 'FileName', nil, nil, 0);

Sharky 5. Aug 2006 10:48

Re: RunProcess ohne EXE sondern mit Datei?
 
Zitat:

Zitat von fwsp
für die öffnung einer datei mit dem standard-programm ist shellexecute vorgesehen.

ShellExecute ist mir bekannt ;-)

Aber was soll mir das bei dem oben beschriebenem Problem helfen?

fwsp 5. Aug 2006 10:51

Re: RunProcess ohne EXE sondern mit Datei?
 
dann eben ShellExecuteAndWait.
gibt es in der CodeLib.

Sharky 5. Aug 2006 11:06

Re: RunProcess ohne EXE sondern mit Datei?
 
Zitat:

Zitat von fwsp
dann eben ShellExecuteAndWait. ...

Hai fwsp,

bei verwendung dieser Funktion gibt es leider Probleme. Wenn ich zum Beispiel ein Bild öffne (bei mir mit ACDSee verkünpft) geht alles wie es soll. Wenn ich aber eine MS-Word Datei öffne hängt sich meine Anwendung nach dem beenden von Word auf.

fwsp 5. Aug 2006 11:12

Re: RunProcess ohne EXE sondern mit Datei?
 
Ich glaub die JEDI hat auch so ne funktion. weiß grad nicht wie die heißt, bestimmt aber jvShellExecuteAndWait :wink:

Michael Habbe 5. Aug 2006 11:21

Re: RunProcess ohne EXE sondern mit Datei?
 
Meines Wissens ist ShellExecute da nicht für geeignet, ich habe vor Jahren mal ein Datenbankabgleichtool geschrieben und dort habe ich CreateProcess verwendet:

Delphi-Quellcode:
var StartupInfo: TStartupInfo;
    ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  StartupInfo.cb := Sizeof(TStartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow:=SW_HIDE;

  if CreateProcess(nil,                  // Anwendungsname
                   PChar(Params),        // Parameter
                   nil,                  // Security
                   nil,                  // Security
                   False,
                   NORMAL_PRIORITY_CLASS, // Priorität
                   nil,                  // Environment
                   'c:\',                // Verzeichnis
                   StartupInfo,
                   ProcessInfo) then
  begin
    if WaitForSingleObject(ProcessInfo.hProcess, 600000) = WAIT_TIMEOUT then
      WriteProtokoll('CreateProcess', 'OK ~ FAILED', 'Timeout')
    ilse
      WriteProtokoll('CreateProcess', 'OK', '');
    CloseHandle(ProcessInfo.hProcess);
  end
  else
    WriteProtokoll('CreateProcess', 'FAILED', '');

  ...
Der Prozess wird gestartet. Dann wird auf das Ende gewartet oder das Warten nach 600 sec abgebrochen.

Christian Seehase 5. Aug 2006 11:52

Re: RunProcess ohne EXE sondern mit Datei?
 
Moin Sharky,

Zitat:

Zitat von Sharky
Wenn ich zum Beispiel ein Bild öffne (bei mir mit ACDSee verkünpft) geht alles wie es soll. Wenn ich aber eine MS-Word Datei öffne hängt sich meine Anwendung nach dem beenden von Word auf.

Das kann ich nicht nachvollziehen (Word 2003). :gruebel:

Ausserdem solltest Du den Aufruf in einen eigenen Thread auslagern, da das WaitForSingleObject sonst ja Deinen Hauptthread blockiert.

Sharky 5. Aug 2006 14:36

Re: RunProcess ohne EXE sondern mit Datei?
 
Zitat:

Zitat von Michael Habbe
...und dort habe ich CreateProcess verwendet: ...

Hai Michael,

das ist ja letztendlich das gleich wie in der Funktion von Luckie aus meinem ersten Beitrag. Dort wird CreateProcess jedoch nicht aufgerufen wenn ich keine .EXE übergebe.


Zitat:

Zitat von Christian Seehase
... Das kann ich nicht nachvollziehen (Word 2003). ...

Wie gesagt,
unter Verwendung der Funktion ShellExecuteAndWait hängt es nach dem Start einer .DOC
Eben sehe ich das es auch bei XLS passiert. Es scheinen also die Office 2003 Anwendungen bei mir zu sein die ein Problem machen.
AdobeAcrobat und andere gehen ohne Probleme :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz