Конференция "WinAPI" » Вешаем форму к чужому окну и убираем из таскбара [D7, WinXP]
 
  • w666w (21.10.13 04:50) [0]
    Перерыл весь гугл, нашел решение для одной части задачи и для второй. Но склеить воедино никак не могу ( Проект на Delphi 7 работал прекрасно, переехал на Delphi XE и появилась эта проблема. Простите, тема заезженная до дыр, но действительно для такого набора в одной задаче не нашел решения.

    В суть в следующем:
    Само приложение не отображается в таскбаре, только в трее. во время исполнения динамически создается форма, которая подвешивается на блокнот. Чтобы форма всегда была над блокнотом, выставляю блокнот ее родителем:

    SetWindowLong(DynamicForm.Handle, GWL_HWNDPARENT, NotePad.Handle);

    но сразу же после этого в таскбаре появляется кнопка приложения ( Пробовал выставлять стиль в WS_EX_TOOLWINDOW:

    SetWindowLong(DynamicForm.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW) нет результата

    Повторюсь, этой проблемы не было на D7, все работало как хотелось, но на XE стала появляться кнопка в панели задач. Помогите дельным советом...
  • все арамисы, а я Дартаньян (21.10.13 08:35) [1]
    Application.MainFormOnTaskBar?
  • w666w (21.10.13 13:10) [2]
    Главная форма не показывается в таскбаре и с ней проблем нет. Кнопка в таскбаре появляется сразу после создания новой, дочерней, динамической формы и определения ее родителем формы другого приложения.
  • Германн © (21.10.13 15:51) [3]
    Application.MainFormOnTaskBar
  • w666w (21.10.13 17:37) [4]
    НЕ РАБОТАЕТ ЭТО, скрывает ГЛАВНУЮ ФОРМУ и после запуска в таскбаре ничего нет, но когда создается динамическая форма - в такбаре появляется кнопка приложения. Если бы все было так просто, я бы не обращался за помощью. Нужен код приложения для изучения?
  • Германн © (21.10.13 17:47) [5]
    А ведь это свойство как раз то, что отличает Д7 от более старших версий Дельфи. Ты действительно пробовал поставить его в False в файле проекта?
  • w666w (21.10.13 18:28) [6]
    Ок, начнем по порядку. Файл проекта:

    program Project1;

    uses
     Vcl.Forms,
     Unit1 in 'Unit1.pas' {Form1};

    {$R *.res}

    begin
     Application.Initialize;
     Application.MainFormOnTaskbar := false;
     Application.CreateForm(TForm1, Form1);
     Application.Run;
    end.

    запускаю - в таскбаре ЕСТЬ кнопка приложения. то не так?
  • w666w (21.10.13 19:03) [7]
    используется Delphi XE4 !
  • Германн © (21.10.13 21:31) [8]

    > w666w   (21.10.13 18:28) [6]
    >
    > Ок, начнем по порядку. Файл проекта:
    >
    > program Project1;
    >
    > uses
    >  Vcl.Forms,
    >  Unit1 in 'Unit1.pas' {Form1};
    >
    > {$R *.res}
    >
    > begin
    >  Application.Initialize;
    >  Application.MainFormOnTaskbar := false;
    >  Application.CreateForm(TForm1, Form1);
    >  Application.Run;
    > end.
    >
    > запускаю - в таскбаре ЕСТЬ кнопка приложения. то не так?
    >

    Все так. Точно так как было и в Д7. А вот если бы оставил то что было по умолчанию в ХЕ (Application.MainFormOnTaskbar := true) кнопки приложения в таскбаре бы и не было вообще и никогда.
  • w666w (21.10.13 22:01) [9]
    Мы как будто на разных языках говорим ))) я же пишу - разницы между

     Application.MainFormOnTaskbar := true;
    и
     Application.MainFormOnTaskbar := false;

    в Delphi XE почему то НЕТ!
  • Германн © (21.10.13 22:32) [10]

    > Мы как будто на разных языках говорим ))) я же пишу - разницы
    > между
    >
    >  Application.MainFormOnTaskbar := true;
    > и
    >  Application.MainFormOnTaskbar := false;
    >
    > в Delphi XE почему то НЕТ!

    Её так же нет как и того суслика из анекдота.
    А ты так и не удосужился прочитать что это за новое свойство, которого не было в Д7. Что оно значит, для чего оно нужно. Что за кнопка находится в таскбаре когда это свойство true и когда false.
    Как же мы в результате можем говорить на одном языке?
  • Leonid Troyanovsky © (22.10.13 18:14) [11]

    > w666w   (21.10.13 04:50)

    > была над блокнотом, выставляю блокнот ее родителем:SetWindowLong(DynamicForm.
    > Handle, GWL_HWNDPARENT, NotePad.Handle);

    Оный вызов д.б. из процесса блокнота.

    See also
    http://www.delphimaster.net/view/4-1258675071/

    --
    Regards, LVT.
 
Конференция "WinAPI" » Вешаем форму к чужому окну и убираем из таскбара [D7, WinXP]
Есть новые Нет новых   [134427   +34][b:0][p:0]