Announcement

Collapse
No announcement yet.

Programm minimiert starten

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

  • Programm minimiert starten

    Hallo Leute!

    Ich hätte da mal eine, wahrscheinlich einfach zu beantwortende, Frage.
    In meinem Programm hat der Anwender die Möglichkeit das Programm beim Systemstart automatisch starten zu lassen. Das habe ich durch den entsprechenden Eintrag in der Registry realisiert.<br>
    Nun soll der Anwender aber auch die Möglichkeit haben, dass das Programm minimiert in der TBNA gestartet werden soll.<br>
    Tja, und da liegt das Problem.<br>
    Der Anwender kann zwar zur Laufzeit bestimmen, ob das Programm in der TBNA liegen soll, aber beim Start des Programms funktioniert dieses Minimieren einfach nicht.<br>
    Das Programm startet immer mit einem sichtbaren Formular.<br>
    Sollte jemand eine Lösung haben, dann wäre ich sehr dankbar.

    mfg

    Torsten Bloth

  • #2
    Hallo Torsten,

    ich habe mal in meinem Programm nachgeschaut. Die Frage ist jetzt: hast du schon eine Verbindung zur TNA oder fehlt das noch?

    Wenn du schon dafür gesorgt hast, dass dein Programm als Icon neben der Uhr auftaucht, dann solltest du mal ausprobieren, ob dir das hier weiterhilft. (Ich hab´s in die "Create"-Methode meines Formulars geschrieben

    <pre>
    procedure Txy.FormCreate(usw.);
    begin
    &nbsp;&nbsp;...
    &nbsp;&nbsp;Application.OnMinimize := App_Hide_Me;
    &nbsp;&nbsp;...
    end;
    </pre>

    Hinter der Funktion "App_Hide_Me" verbirgt sich im Prinzip nur ein weiterer Funktionsaufruf, der dann mein Programm mit der TNA verbunden und das Hauptformular versteckt hat.

    <pre>
    procedure TWinPopup.Hide_this_fucking_Application;
    var
    &nbsp;&nbsp;aNID : TNotifyIconData;
    begin
    &nbsp;&nbsp;// connect to TNA -->
    &nbsp;&nbsp;aNID.cbSize := SizeOf(TNotifyIconData);
    &nbsp;&nbsp;aNID.Wnd := Handle;
    &nbsp;&nbsp;aNID.uID := MyTaskBarID;
    &nbsp;&nbsp;aNID.uFlags := NIF_MESSAGE OR NIF_ICON OR NIF_TIP;
    &nbsp;&nbsp;aNID.uCallbackMessage:= WM_PrivateTaskBarMsg;
    &nbsp;&nbsp;aNID.hIcon := Application.Icon.Handle;
    &nbsp;&nbsp;aNID.szTip := 'Anonymus';<br>
    &nbsp;&nbsp;Shell_NotifyIcon(NIM_ADD, @aNID);<br>
    &nbsp;&nbsp;// hide the forms -->
    &nbsp;&nbsp;ShowWindow(Handle, SW_HIDE);
    &nbsp;&nbsp;ShowWindow(Application.Handle, SW_HIDE);
    end;</pre>

    Bei mir ist es so, dass das Programm auch sichtbar starten kann. Wenn der Kommandozeilenparameter allerdings "-minimized" war, dann sollte es gleich und nur minimiert in der TNA erscheinen. Also habe ich mir so geholfen, dass ich die Funktion (die heißt wirklich so ... *g*) in dem Fall direkt aufgerufen habe:

    <pre>
    procedure TWinPopup.FormActivate(Sender: TObject);
    begin
    &nbsp;&nbsp;if (Mini = 1) then
    &nbsp;&nbsp;&nbsp;&nbsp;begin
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hide_this_fuck ing_application(Sender);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinPopup.To p := xTop;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinPopup.Le ft := xLeft;
    &nbsp;&nbsp;&nbsp;&nbsp;end;
    end;</pre>

    Am Wochenende kann ich mal gucken, ob´s noch was zu beachten gab. Ich kann von hier nur meine Units inspizieren.

    Vielleicht hat dir das ja auch schon geholfen.

    Gruß, Mathias

    Comment


    • #3
      Hallo Mathias!

      Besten Dank für die schnelle Antwort.<br>
      Diese Variante werde ich doch gleich mal ausprobieren. Sieht jedenfalls recht gut aus.<br>
      Ach so. Ja, die Verbindung zur TBNA steht schon.<br>

      Hier mal eine kurze Beschreibung des Progs:<br>
      Der User kann über eine CheckBox bestimmen, ob das Programm minimiert, oder halt nicht, starten soll.<br>
      Darauf hin wird dann ein Eintrag in der Registry gesetzt.<br>
      Beim Start des Programms wird unter <b>TForm1.FormCreate</b> dieser Eintrag in der Registry abgefragt. Dann wird entschieden, ob das Programm nun minimiert, oder eben nicht, gestartet werden soll.<br>
      So habe ich mir den Weg eigentlich gedacht.<br>
      Wie gesagt, das Prog startet halt nicht minimiert.<br>
      Die Registry wird auch korrekt ausgelesen.<br>
      <p>
      Jedenfalls werde ich es mal mit Deiner Variante probieren.<br>

      mfg

      Torste

      Comment

      Working...
      X