![]() |
Externe Anwendung starten + ProgressBar
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 |
Re: Externe Anwendung starten + ProgressBar
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) |
Re: Externe Anwendung starten + ProgressBar
Man könnte mit WaitForInputIdle() warten, bis der Prozess bereit für Eingaben ist:
Delphi-Quellcode:
Aber ein Progressbar ist so gut wie unmöglich, da nich absehbar ist, wie lange der Vorgang dauern wird.
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; |
Re: Externe Anwendung starten + ProgressBar
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 |
Re: Externe Anwendung starten + ProgressBar
Danke sx2008, das wäre vielleicht eine Idee für das Wartefenster. Muß ich mal probieren.
|
Re: Externe Anwendung starten + ProgressBar
Kann man mit der Abfrage nach dem Cursor-Aussehen etwas anfangen?
Stichwort: Sanduhr...WM_???CURSOR... |
Re: Externe Anwendung starten + ProgressBar
Zitat:
|
Re: Externe Anwendung starten + ProgressBar
und wie sieht das dann aus?
|
Re: Externe Anwendung starten + ProgressBar
Zitat:
@Bernahrd: Wie stellst du dir das vor? Das habe ich jetzt nicht so gant verstanden. |
Re: Externe Anwendung starten + ProgressBar
Es gäbe da noch zwei andere Möglichkeiten:
1.) Anstatt Powerpoint wird der Powerpoint-Viewer gestartet. download: ![]() 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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