![]() |
Form soll Kontrolle übenehmen
Hallo,
ich rufe mit ShellExecute 2 PDF-Reader auf und öffne 2 verschiedene ca. 200 MB große PDF-Dateien auf einer bestimmten Seite. Das klappt alles gut. Jetzt soll meine Anwendung wieder die Kontrolle übernehmen. Das erreiche ich mit SetForeground. Wenn die PDF-Datein noch nicht ganz geöffnet sind, also die Reader noch arbeiten, gehen diese immer wieder in den Vordergrund. Die Ladezeiten der PDF-Datein sind unterschiedlich. Dadurch ist eine Lösung über eine Programmpause nicht optimal. Die Ladezeit iat ja auch von der Rechnergeschwindigkeit abhängig. Ich kann zwar über das HANDLE prüfen ob die PDF-Reader laufen und dann mein Programm mit SetForeGround aktiv machen, dann sind aber oft noch nicht die PDF-Datein geladen und die Reader übernehmen wieder die Kontrolle. Bei einer Maussteuerung meines Programms ist das nicht wichtig, da das Formular ja sichtbar ist. Das Prgramm soll aber auch ausschliesslich mit der Tastatur bedienbar sein und da muss es nicht nur sichtbar, sondern auch aktiv sein. Gibt es eine Möglichkeit?:oops: |
AW: Form soll Kontrolle übenehmen
Einfach alle 100ms 'SetForeground' aufrufen bzw. prüfen, ob das eigene Fenster aktiv ist?
"Topmost" ist auch ein Kandidat. |
AW: Form soll Kontrolle übenehmen
Es gibt eine Funktion oder Nachricht, die einem sagt, ob ein Prozess gerade beschäftigt ist oder nicht. Wenn die Reader die PDFs fertig geladen haben, sollten sie nicht mehr beschäftigt sein. leider fällt mir der Name der Funktion/Nachricht im Moment nicht ein.
|
AW: Form soll Kontrolle übenehmen
Hilft das hier weiter:
![]() |
AW: Form soll Kontrolle übenehmen
Wozu öffnest du diese Programme/PDFs, wenn sie dann keiner lesen darf?
PS: Man kann PDFs auch in einem TOleContainer, innerhalb des eigenen Programms laden. Im Programm wird eine Message gesendet, wenn das eigene Programm den Eingabefokus verliert. Timer: Aber wer sagt dir, daß dann keiner der Kunden in der Titelleiste auf eines der PDFs geklickt hat, weil er das lesen will? Währe doch sehr nett, wenn dann ständig soein blödes Programm sich immer wieder in den Fordergrund holt. |
AW: Form soll Kontrolle übenehmen
Danke für Eure Hilfe,
DaddyH, Dein Link sieht sehr interessant aus, werde ihn auspropieren. Hallo Himitsu, Du kennst das Programm nicht. Für den Nutzer ist in diesem Fall nur die angezeigte Seite von Interese und er möchte dann über das aktive Form das Programm in seinem Ablauf weiter steuern. Trotzdem danke für Deine Antwort. Wenn es klappt, melde ich Erfolg. Danke |
AW: Form soll Kontrolle übenehmen
Natürlich kenn ich es nicht.
Hat uns schließlich noch niemand verraten, warum die PDFs unbedingt im Hintergrund offen sein müssen. :zwinker: Aber wie gesagt, der Timer ist keine gute Lösung und es gibt ein Event (OnDeactivate in TApplicationEvents oder notfalls in Application), welches natürlich immer gefeuert wird, wenn sich ein anderes Programm den Fokus mopst (ausversehn, oder weil es der Benutzer so wollte). Und es gibt die ActiveX-Variante. |
Dieses Thema wurde am "21. May 2012, 13:27 Uhr" von "TBx" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Programmieren allgemein" verschoben.
|
AW: Form soll Kontrolle übenehmen
Danke himitsu
|
AW: Form soll Kontrolle übenehmen
Hallo himitsu,
ich habe mein Problem gelöst mit OnDeactivate in TApplicationEvents. Danke für Deinen Tip, geht wunderbar. Danke aber auch an alle anderen, für Ihre Tips. Volker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 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 by Thomas Breitkreuz