Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi IDE Experte - Ist die IDE vollständig geladen? (https://www.delphipraxis.net/53385-ide-experte-ist-die-ide-vollstaendig-geladen.html)

FriFra 15. Sep 2005 11:04


IDE Experte - Ist die IDE vollständig geladen?
 
Wie bekomme ich innerhalb einer IDE-Experten-dll mit, wenn die IDE vollständig geladen ist?

Der Experte wird ja schon aktiv, während Delphi noch garnicht angezeigt wird, bzw. nur der Splashscreen, ich will aber ein Fenster aufpoppen lassen, wenn Delphi "Bereit" ist :roll:

choose 15. Sep 2005 12:34

Re: IDE Experte - Ist die IDE vollständig geladen?
 
Ich konnte in der ToolsAPI nichts dazu finden. Aber was genau bedeutet "vollständig geladen"? Wenn Du das mit einem sichtbaren IDE-Fenster gleichsetzt, warte auf das Fenster. Wenn Du einen sichtbaren Formulardesigner erwartest, warte auf einen entsprechenden Designer... Was passiert, wenn mehrere Packages auf dieses Ereignis warten und jeweils davon ausgehen, dass nun "alles" geladen ist?

Kurz: Was hast Du vor, geht es genauer?

himitsu 15. Sep 2005 12:47

Re: IDE Experte - Ist die IDE vollständig geladen?
 
Na ja, du könntest ja prüfen lanen, ob ein Fenster existiert, das dem Type dessen hat, auf das du warten willst ... in der DP sollte es einiges geben, womit mal prüfen kann, ob ein bestimmtes Fenster-Objekt und damit ein bestimmtes Programm aktiv ist.

FriFra 16. Sep 2005 01:55

Re: IDE Experte - Ist die IDE vollständig geladen?
 
Ja, so mache ich es jetzt ;)

Ich starte jetzt einfach einen Timer, der alle 1000ms prüft ob Delphi bereit ist und dann ggf. loslegt :thumb:
Delphi-Quellcode:
procedure TQuote.TimerRunTimer(Sender: TObject);
  function IdeReady: boolean;
  var
    wnd: HWND;
  begin
    Result := False;

    { Prüfen ob IDE geladen ist }
    wnd := FindWindow('TAppBuilder', nil);
    Result := wnd <> 0;

    { Prüfen ob SplashScreen noch angezeigt wird }
    wnd := FindWindow('TForm', 'SplashScreen');
    Result := wnd = 0;
  end;

  ...

var
  ...
begin
  TimerRun.Enabled := False;
  if IdeReady = True then
  begin

    //Hier gehts weiter
    ...

  end
  else
    TimerRun.Enabled := True;
end;
Das Endergebnis gibts > HIER < :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 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