Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   DOC Datei zu RTF Datei umwandeln (https://www.delphipraxis.net/96830-doc-datei-zu-rtf-datei-umwandeln.html)

binio 31. Jul 2007 14:10


DOC Datei zu RTF Datei umwandeln
 
Hallo möchten mit hilfe von Word eine *.doc Datei zu einer *.rtf datei umwandeln.
habe mit OleVariant schon word öffnen können und auch eine *.rtf Datei erzeugen können.
Das Problem ist nur das ich mit "CreateProcess" diesen Externen aufruf überwachen und in den Hintergrund schieben will. Also bis jetzt ist es so das ich den Focus verliere wenn er zu dem Codestück kommt.
Mit "CreateProcess" kann man sich informationen über den Status des ausgeführten programms hollen.
Was nun das Problem ist das ich kein externes Programm aufrufe sondern eine Objekt nutze.

Meine bisherigen Erfolg habe ich hier mal gepostet:
Delphi-Quellcode:
 function doctortf(quelle: string; ziel: string): boolean;
 var
   V: OleVariant;
 begin { func doctortf }
   try
     V:=CreateOleObject('Word.Application');
     v.visible:=false;
     V.Documents.open(FileName:=quelle, {ConfirmConversions:=true,}
         ReadOnly:=False, AddToRecentFiles:=False, PAsswordDocument:='',
         PasswordTemplate:='', Revert:=False, WritePasswordDocument:='',
         WritePasswordTemplate:='', Format:=wdOpenFormatAuto);
     V.ActiveDocument.SaveAs(FileName:=ziel, FileFormat:=wdFormatRTF,
         LockComments:=False, Password:='', AddToRecentFiles:=True,
         WritePassword:='', ReadOnlyRecommended:=False,
         EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False,
         SaveFormsData:=False, SaveAsAOCELetter:=False);
     V.Quit;
   except
     // if (varisclear(v)) or (varisnull(v)) then
     begin
       abbruch:=true;
       application.messagebox(pchar('Es wurde keine Word-Installation '+
            'vorgefunden!'), 'Fehler!', mb_ok);
       exit;
     end;
   end;
 end; { func doctortf }
Ich hoffe es kann mir hier jemand helfen. Bin schon am verzweifeln....!!!!

Danke im vorraus

shmia 31. Jul 2007 17:08

Re: DOC Datei zu RTF Datei umwandeln
 
Irgendwie ist es schwer zu verstehen, was dein eigentliches Problem ist.
Zwischen den Zeilen lese ich, dass deine Anwendung ungestört weiterlaufen soll,
während Winword im Hintergrund die Dateien konvertiert, richtig ?

Bernhard Geyer 31. Jul 2007 17:14

Re: DOC Datei zu RTF Datei umwandeln
 
Bei OLE/COM würde ich nix mit (Hindergrund-)Threads etc. machen. Hab schon diverse Anwendungen (ok, war Software aus der "1A-Qualitätschmiede" Adobe versucht in Threads auszulagern, jedoch hat es dann in den entsprechenden Anwendungen etc. gehackt (Abstürze, Keine Rückmeldunge, ...).

Falls du ein paar € ausgeben kannst, so gäbe es bei TRichView eine fertige Lösung. Diese laufen AFAIK über die installierten Import/Exportfilter von Word.

Reinhard Kern 31. Jul 2007 17:59

Re: DOC Datei zu RTF Datei umwandeln
 
Zitat:

Zitat von binio
Hallo möchten mit hilfe von Word eine *.doc Datei zu einer *.rtf datei umwandeln.
Was nun das Problem ist das ich kein externes Programm aufrufe sondern eine Objekt nutze.
...

Wieso denn? Wenn du Word als OLE-Objekt aufrufst, laufen Word und dein Programm nebeneinander her wie andere Programme auch, und du kannst mit Anklicken der Fenster oder sonstwie hin und her wechseln. Geht bei mir jedenfalls mit Excel so: ich übertrage Messdaten in Excel, die kann ich dort weiterbearbeiten, was normalerweise ja der Sinn der Übung ist. Genausogut kann ich aber auch Excel mitsamt den Daten links liegenlassen und in meinem eigenen Programm weiterarbeiten. Wo ist da ein Problem?

Gruss Reinhard

semo 31. Jul 2007 22:49

Re: DOC Datei zu RTF Datei umwandeln
 
ich versteh das problem auch nicht so ganz.
wozu willst du das speichern als rtf als prozess überwachen.
was versprichst du dir von der ganzen sache?

binio 1. Aug 2007 13:32

Re: DOC Datei zu RTF Datei umwandeln
 
Da ich ja eine Rießen Datei von doc nach rtf umwandeln will dauert es einige Minuten bis die Anwendung fertig ist. Daher will ich den Prozess im Hintergrund in ein Thread packen und wenn er fertig ist den User Weiterführen vorher soll er nur eine Meldung bekommen die Lautet "Bitte warten, konvertierung läuft..."
Hoffe mein Problem ist jetzt bischen verständlicher :o)

Aber ich denke Bernhard Geyer hat schon recht....

binio 5. Aug 2007 20:20

Re: DOC Datei zu RTF Datei umwandeln
 
gibt es eine Möglichkeit einen Prozess vrom start nur bestimmte Resourcen zu zu schreiben ?
muss das irgentwie hinbekommen das der Prozess nicht so viel CPU-Zeit bekommt.

semo 6. Aug 2007 20:56

Re: DOC Datei zu RTF Datei umwandeln
 
abgesehen von deiner miserablen rechtschreibung versteh ich nur bahnhof.

dem prozess weniger cpu-zeit zukommen zu lassen, dann dauert dein speichervorgang doch noch länger?!

DP-Maintenance 7. Aug 2007 05:35

DP-Maintenance
 
Dieses Thema wurde von "r_kerber" von "Programmieren allgemein" nach "Windows API / MS.NET Framework API" verschoben.
Ich denke, es paßt hier so einigemaßen hin.

binio 7. Aug 2007 20:58

Re: DOC Datei zu RTF Datei umwandeln
 
Ja aber ich hätte in der Zeit die möglichkeit ein anderen Process die Resourcen zu zu teilen.
Wenn ich z.B. ein Dualcore habe der kann doch 2 threads gleichzeitig ausführen/abarbeiten.
Oder ein Prozess für kurze Zeit in den Hintergrund legen.
Eins von beiden muss ich irgentwie hinbekommen.

Kann mir da einer weiterhelfen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr.
Seite 1 von 2  1 2      

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