AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ende von MDI-Anwendungen erfahren
Thema durchsuchen
Ansicht
Themen-Optionen

Ende von MDI-Anwendungen erfahren

Ein Thema von Schwedenbitter · begonnen am 26. Sep 2009 · letzter Beitrag vom 3. Okt 2009
 
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Ende von MDI-Anwendungen erfahren

  Alt 26. Sep 2009, 22:43
Hallo,

ich starte aus meinem Programm heraus über den einfachen Auruf bestimmter Dateien die damit verknüpften Programm. Z.B. öffnet mir ein Aufruf der Datei "Test.odt" diese Datei mit dem SWriter von OpenOffice. Da ich diese Datei aus bestimmten Gründen zuvor in ein temporäres Verzeichnis kopiere und von dort aus aufrufe/öffne, muss sie natürlich nach der Bearbeitung durch den SWriter wieder zurück kopiert werden. Das ganze geschieht (im Moment) so:
Delphi-Quellcode:
Procedure ExecuteProgramm(Const PFileName,Params: String; Warten: Boolean = True);
Var
   SEInfo      : TShellExecuteInfo;
   ExecuteFile   : String;
Begin
   ExecuteFile:='"'+PFileName+'"';
   FillChar(SEInfo,SizeOf(SEInfo),0);
   SEInfo.cbSize:=SizeOf(TShellExecuteInfo);
   With SEInfo Do
   Begin
      fMask:=         SEE_MASK_NOCLOSEPROCESS;
      Wnd:=            Application.Handle;
      lpFile:=         PChar(ExecuteFile);
      lpParameters:=   PChar(Params);
      nShow:=         SW_SHOWNORMAL;
   End;
   If ShellExecuteEx(@SEInfo) Then
      If Warten Then
         While Not Application.Terminated And
            (MsgWaitForMultipleObjects(1,SEInfo.hProcess,False,INFINITE,QS_ALLINPUT)=WAIT_OBJECT_0+1) Do
               Application.ProcessMessages;
End;

[...]

Procedure TForm1.Irgendwas;
Begin
   ExecuteProgramm('D:\Test.odt','',True);
Handelt es sich um eine SDI-Anwendung ist das ja kein Problem, da die Awendung fast immer beendet wird, wenn das Dokument geschlossen wird. Ich weiß, es gibt Ausnahmen, was aber nicht diskutiert werden soll. Bei MDI-Anwendungen läuft es so leider nicht.

So habe ich das Problem, dass der Benutzer z.B. die Test.odt über mein Programm lädt und ich warte. Danach öffnet er eine andere Datei, ohne den SWriter zu beenden. Selbst wenn er die Test.odt schließt, bekomme ich das nicht mit und warte weiter (auf das Ende vom SWriter). Am Ende kann das dazu führen, dass auch immer mehr Instanzen von meinem Programm im Speicher rumlungern. Schlimmer ist aber, dass die Dateien von mehreren Nutzern bearbeitet werden. Die aktuelle Datei steht dann nicht allen zur Verfügung.
Ich hoffe, Ihr könnte mein Problem nachvollziehen. Ansonsten bitte fragen.

Kann mir da jemand helfen?

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.
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