Конференция "Начинающим" » Убрать кнопку приложения с Task Bar
 
  • DJ Kondakov (25.11.09 22:08) [0]
    Доброго времени суток! У меня вопрос возник. Делаю нечто вроде резидентной программы. Нужно, чтобы вместо кнопки на панели задач была иконка в SystemTray. Иконку я реализовал, а вот скрыть кнопку не получается - приложение сворачивается полностью, а мне надо, чтобы главное окно постоянно держалось открытым. Что делать? Пытался гуглить, нашел такой пример:
    Ваш файл проекта должен выглядеть приблизительно так:
    program Project1;

    uses
    Windows,
    Forms,
    Unit1 in 'Unit1.pas' {Form1},
    Unit2 in 'Unit2.pas' {Form2};

    {$R *.RES}

    begin
    Application.Initialize;
    Application.ShowMainForm := False;
    Application.CreateForm(TForm1, Form1);
    Application.CreateForm(TForm2, Form2);
    ShowWindow(Application.Handle, SW_HIDE);
    Application.Run;
    end.

    В разделе "initialization" (в самом низу) каждого unit'а добавьте

    begin
    ShowWindow(Application.Handle, SW_HIDE);
    end.


    Проблема та же - приложение запускается свернутым и без кнопки.
  • korneley © (26.11.09 03:21) [1]
    "запуздырить в трей?" Не надо так. Пожалейте. Хотя:

    > а мне надо, чтобы главное окно постоянно держалось открытым

    Это как? Неубиенное приложение - мечта девочки подростка?
  • DJ Kondakov (26.11.09 05:18) [2]
    Почему "неубиенное"? Приложение закрывается как обычно, кнопкой "Закрыть". Просто мне надо, чтобы в развернутом состоянии оно не имело кнопки на панели задач.Так могут делать многие плееры, например Винамп и Аимп.
  • brother © (26.11.09 05:26) [3]
    в FormActivate:
    procedure TForm1.FormActivate(Sender: TObject);
    begin
     ShowWindow(Application.Handle, SW_HIDE);
    end;


    у меня все отрабатывает как надо (D6, XP)...
    зы каким компонентом добавляешь иконку в трей? некоторые компоненты, скрытие/ показ осуществляют сами, копай исходники...
  • DJ Kondakov (26.11.09 05:27) [4]
    Я не компонентом пользуюсь, а работаю с TNotifyIcon.
  • brother © (26.11.09 05:43) [5]
    [3] код попробовал? какова реакция?
  • Юрий Зотов © (26.11.09 05:54) [6]
    > DJ Kondakov   (25.11.09 22:08)

    > Пытался гуглить, нашел такой пример:
    > В разделе "initialization" (в самом низу) каждого unit'а добавьте
    > begin
    > ShowWindow(Application.Handle, SW_HIDE);
    > end.


    Елы-палы!!! Это что же за советчик такие советы дает?

    > Нужно, чтобы вместо кнопки на панели задач была иконка в
    > SystemTray. Иконку я реализовал, а вот скрыть кнопку не получается -
    > приложение сворачивается полностью, а мне надо, чтобы главное окно
    > постоянно держалось открытым. Что делать?


    Не использовать сторонние компоненты и странные (мягко говоря) советы, а вместо них реализовать нужное поведение самому. Это несложно:  
    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=903
  • Alex_C (26.11.09 08:25) [7]
    Читать тут

    http://pda.delphimaster.net/?id=1257749650&n=18

    А ответ вот:

    // Чтоб не было видно на панели задач
    SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    Application.Initialize;
    // Чтобы скрыть главную форму при загрузке
    Application.ShowMainForm := False;
    Application.CreateForm(TCWForm, CWForm);
    Application.Run;

  • Alex_C (26.11.09 08:25) [8]

    > в FormActivate:
    > procedure TForm1.FormActivate(Sender: TObject);
    > begin
    >  ShowWindow(Application.Handle, SW_HIDE);
    > end;
    > у меня все отрабатывает как надо (D6, XP)...


    Не работает это как надо... См. ссылку на тему выше!
  • sniknik © (26.11.09 09:49) [9]
    > Не работает это как надо... См. ссылку на тему выше!
    это работает как надо, от твоих повторений, что оно не работает, работать не перестает.... проблема не в этом, а скорее в зеркале
    кстати зачем ты все повторяешь если уже "нашел" ответ в "английком" форуме
    http://pda.delphimaster.net/?id=1257749650&n=18
    ?
 
Конференция "Начинающим" » Убрать кнопку приложения с Task Bar
Есть новые Нет новых   [134432   +20][b:0][p:0.001]