Announcement

Collapse
No announcement yet.

Zugriff auf Taskleiste

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf Taskleiste

    Hi!<br>
    Ich entwickle zur Zeit ein Programm zur Projektverwaltung, welches minimiert<br>in der Taskleiste nicht mehr den Titel, sondern den Status - im Prinzip einen<br>beliebigen Text - anzeigen soll. Gleichzeitig soll als Hint die Projekt-<br>bezeichnung ausgegeben werden. Wird das Fenster aus der Taskleiste heraus<br>wieder aktiviert, soll in der Taskleiste wieder ganz normal der Programm-<br>name stehen.<br>
    Ich hab es mit
    <pre>
    if Form1.WindowState = wsMinimized then
    Application.Title := status
    else
    Application.Title := ...
    </pre>
    probiert. Aber anscheindend funktioniert wsMinimized bzw. WindowState nicht<br>so, wie ich dachte. Auch mit "Shell_NotifyIcon" hab ich es probiert, komme damit<br>aber leider auch nicht weiter. Auch in der Online-Hilfe hab ich nichts gefunden.<br>
    Hat jemand eine Idee und kann mir weiterhelfen? Danke im voraus.<p>

  • #2
    Hallo,

    wo ist das Problem? Das sichtbare Hauptformular ist für Windows <b>nicht</b> das Hauptfenster der Anwendung - statt dessen ist das "unsichtbare" <b>Application</b>-Fenster für Windows der Ansprechpartner. Daher muss die Komponente <b>TApplicationEvents</b> eingesetzt werden, um auf die Ereignisse <b>OnMinimize</b> und <b>OnRestore</b> reagieren zu können. Das folgende Beispiel demonstriert, wird die Beschriftung des Taskbar-Icons nach dem Verkleinern durch einen Timer aktualisiert wird:
    <pre>
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    AppEvnts, ExtCtrls;

    type
    TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    Timer1: TTimer;
    procedure ApplicationEvents1Minimize(Sender: TObject);
    procedure ApplicationEvents1Restore(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    private
    { Private-Deklarationen }
    FValue : Integer;
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
    begin
    Timer1.Enabled := True;
    end;

    procedure TForm1.ApplicationEvents1Restore(Sender: TObject);
    begin
    Timer1.Enabled := False;
    Application.Title := 'Wiederhergestellt';
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    Inc(FValue);
    Application.Title := IntToStr(FValue);
    end;

    end.
    </pre>
    P.S: In meinem Buch <i>Delphi Win32-Lösungen</i> sind die Details und weitere Beispielprojekte zu TApplication zu finden

    Comment


    • #3
      Hallo Herr Kosch,
      zunächst mal vielen Dank für die Hilfe. Ich war wohl blind! Die ganze Zeit war die entsprechende Komponente (ApplicationEvents) vor meinen Augen und ich hab sie nicht gesehen. Naja, manchmal braucht man wohl jemanden, der einen mit der Nase draufstößt.

      Jetzt hab ich aber noch ein Problem bzw. eine Frage, die für Sie sicherlich sehr einfach zu beantworten ist.
      Ich möchte aus dem Programm heraus Zugriff auf die Versionsinformation sprich Build-Numnmer nehmen. Habe dazu auch in der Windows-API-Hilfe eine Funktion gefunden: GetVersionOfFile.
      Aber Delphi kennt die Funktion wohl nicht (Compilerfehler). Zumindest finde ich keine .DCU, in der GetVersionOfFile vorhanden ist. Und im "Win32-API" von C&L finde ich auch nichts über diese Funktion. Liegt hier ein Fehler in der Delphi-Hilfe vor?
      Grüße, Reimund

      Comment


      • #4
        Hallo,

        die Funktion GetVersionOfFile ist <br>
        a) entweder keine API-Funktion, oder <br>
        b) undokumentiert, <br>
        denn auch in der aktuellen Microsoft Platform SDK-Hilfe ist diese Funktion nicht vorhanden.

        Für das Auslesen der Versionsnummer gibt es mehrere Möglichkeiten: <br>
        1. Das <b>FileSystemObject</b> (FSO) stellt die Methode <b>GetFileVersion</b> zur Verfügung, um die Versionsnummer zurückzuliefern. Ein Beispiel für den Zugriff auf das FSO ist in der Ausgabe 2.2000 von DER ENTWICKLER zu finden, die Beispielprojekte können zudem im Downloadbereich heruntergeladen werden. <br>
        2. Die API-Funktion <b>GetFileVersionInfo</b> wird verwendet, um die Struktur der vordefinierten Informationen inkl. der Versionsnummer auszulesen. Beispiele für den Einsatz von GetFileVersionInfo und VerQueryValue sollten in diesem FORUM über die Suche-Funktion zu finden sein

        Comment


        • #5
          Hallo Herr Kosch,

          erneut Danke für die Hilfe. Ich hab die Variante "FileSystemObject" in mein Programm eingebaut. Es funktioniert prima. Und ich hab wieder was dazugelernt.

          Bis zum nächstenmal, Reimun

          Comment

          Working...
          X