AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Externe Anwendung starten + ProgressBar
Thema durchsuchen
Ansicht
Themen-Optionen

Externe Anwendung starten + ProgressBar

Ein Thema von PanFan · begonnen am 28. Jul 2009 · letzter Beitrag vom 21. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
PanFan

Registriert seit: 28. Jul 2009
4 Beiträge
 
Delphi 4 Professional
 
#1

Externe Anwendung starten + ProgressBar

  Alt 28. Jul 2009, 18:48
Hallo Experten,

ich bin nicht mehr der jüngste und etwas schwer von Begriff, aber für Euch ist das mit Sicherheit ein Klacks.

Ich möchte in meinem Programm per Button-Klick eine *.pps öffnen und mittels ProgressBar den Ladezustand anzeigen. Die ProgressBar soll sich in einem eigenen Fenster befinden, welches danach auch wieder verschwindet.

Das ist eigentlich etwas, das es heute in jeder kleinen Anwendung gibt aber ich bringe es einfach nicht zusammen.

Kann mir jemand ein Beispiel zum abgucken zukommen lassen?

Gruß
Peter

achso...ich benutze Delphi 4
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Externe Anwendung starten + ProgressBar

  Alt 28. Jul 2009, 19:40
also die .pps kannst du einfach per ShellExecute öffnen ... dieses sucht sich schon das passende Programm raus, startet es und übergibt ihm den Dateinamen.
> soviel zum externen Öffnen

aber das mit dem Ladebalken wird schwerer/unmöglich,
denn wenn ein anderes Programm die Datei öffnet, dann weiß dein Programm ja nicht wie weit das andere ist (abgesehn davon das andere Programm hat eine passende Schnittstelle, wo dein Programm dann danach fragen kann)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Externe Anwendung starten + ProgressBar

  Alt 28. Jul 2009, 20:07
Man könnte mit WaitForInputIdle() warten, bis der Prozess bereit für Eingaben ist:
Delphi-Quellcode:
uses ..., ShellApi;
function ShellExecBlocking(const FileName: string; const Parameters: string;
  const Verb: string; CmdShow: Integer; const Directory: string): Boolean;
var
  Sei: TShellExecuteInfo;
  Res: LongBool;
  Msg: tagMSG;
begin
  FillChar(Sei, SizeOf(Sei), #0);
  Sei.cbSize := SizeOf(Sei);
  Sei.fMask := SEE_MASK_DOENVSUBST or SEE_MASK_FLAG_NO_UI or SEE_MASK_NOCLOSEPROCESS or
    SEE_MASK_FLAG_DDEWAIT;
  Sei.lpFile := PChar(FileName);
  Sei.lpParameters := PCharOrNil(Parameters);
  Sei.lpVerb := PCharOrNil(Verb);
  Sei.nShow := CmdShow;
  Sei.lpDirectory := PCharOrNil(Directory);
  Result := ShellExecuteEx(@Sei);
  if Result then
  begin
    WaitForInputIdle(Sei.hProcess, INFINITE);
    CloseHandle(Sei.hProcess);
  end;
end;
Aber ein Progressbar ist so gut wie unmöglich, da nich absehbar ist, wie lange der Vorgang dauern wird.
fork me on Github
  Mit Zitat antworten Zitat
PanFan

Registriert seit: 28. Jul 2009
4 Beiträge
 
Delphi 4 Professional
 
#4

Re: Externe Anwendung starten + ProgressBar

  Alt 28. Jul 2009, 20:17
jo, ShellExecute verwende ich auch dafür und das funzt problemlos. Aber eben den Fortschritt des "anderen" Programms abzufragen bringe ich nicht zusammen. Die PPS, die ich laden möchte ist 250MB schwer und das dauert, zumindest beim ersten Mal, eine Weile. Und damit der User sieht was los ist, möchte ich eben diesen Fortschritt anzeigen.

Eine andere Möglichkeit ist die Anzeige eines einfachen Fensters mit z.B.: "Moment bitte, Anwendung wird geladen...". Aber auch damit komme ich nicht weiter. Entweder wird es viel zu früh wieder geschlossen oder es geht garnicht weil die Fehlermeldung kommt, daß die Eigenschaft Visible bei OnShow und OnHide nicht verändert werden kann.

Gruß
Peter
  Mit Zitat antworten Zitat
PanFan

Registriert seit: 28. Jul 2009
4 Beiträge
 
Delphi 4 Professional
 
#5

Re: Externe Anwendung starten + ProgressBar

  Alt 28. Jul 2009, 20:22
Danke sx2008, das wäre vielleicht eine Idee für das Wartefenster. Muß ich mal probieren.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

Re: Externe Anwendung starten + ProgressBar

  Alt 28. Jul 2009, 20:34
Kann man mit der Abfrage nach dem Cursor-Aussehen etwas anfangen?
Stichwort: Sanduhr...WM_???CURSOR...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Externe Anwendung starten + ProgressBar

  Alt 28. Jul 2009, 20:35
Zitat von PanFan:
Die PPS, die ich laden möchte ist 250MB schwer und das dauert, zumindest beim ersten Mal, eine Weile. Und damit der User sieht was los ist, möchte ich eben diesen Fortschritt anzeigen.
Liegt wohl daran das diese Datei (mindestens Teilweise) in den Windows Filecache geladen werden muss. Du könntest also primitiv vor dem Laden mit PP die Datei mit einem TFileStream pseudomäßig laden. Und dort weist du ja wo du gerade mit dem laden bist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
PanFan

Registriert seit: 28. Jul 2009
4 Beiträge
 
Delphi 4 Professional
 
#8

Re: Externe Anwendung starten + ProgressBar

  Alt 29. Jul 2009, 12:15
und wie sieht das dann aus?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Externe Anwendung starten + ProgressBar

  Alt 29. Jul 2009, 12:21
Zitat von hathor:
Kann man mit der Abfrage nach dem Cursor-Aussehen etwas anfangen?
Stichwort: Sanduhr...WM_???CURSOR...
Und wenn der Benuttzer die Maus über ein anderes fenster bewegt, ändert sich der Mauszeiger wieder.

@Bernahrd: Wie stellst du dir das vor? Das habe ich jetzt nicht so gant verstanden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Externe Anwendung starten + ProgressBar

  Alt 29. Jul 2009, 21:33
Es gäbe da noch zwei andere Möglichkeiten:
1.) Anstatt Powerpoint wird der Powerpoint-Viewer gestartet.
download: http://www.microsoft.com/DOWNLOADS/d...displaylang=de
Während Powerpoint ja eine recht "fette" Anwendung ist, ist der Viewer relativ schlank und sollte schnell geladen sein
Ich gehe mal davon aus, dass du nur die Presentation vorführen möchtest.
2.) Powerpoint hat umfangreiche Automatisierungs-Schnittstellen.
Man kann also Powerpoint.Application starten, dann die PPS-Datei laden und dann die Präsentation starten.
So ist es möglich, dem Benutzer zumindest grob zu sagen, was gerade passiert.
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:11 Uhr.
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