Перейти к содержанию
Fire Monkey от А до Я
  • 0

[Windows] Как получить HWND Application?


Nix0N

Вопрос

Не так давно столкнулся с проблемой, а конкретно была поставлена задача: скрыть иконку приложения с панели задач Windows 7. Перепробовав все известные и хитрые методы - я не добился результата, так как Handle (HWND) класса Application в Firemonkey получить не возможно ! И вдруг я вспомнил ! Ярослав в личной беседе подсказал мне решение, а именно оно заключается в небольшой правке исходного файла в составе среды и таким образом я решил свою проблему при помощи дописанной функции GetApplicationHandle:

ShowWindow(GetApplicationHandle, SW_HIDE);

Ярослав, у меня 2 вопроса:

  • По какой причине в Firemonkey убрали возможность получить хэндл Application ?
  • Возможно, если Вас не затруднит, выложить здесь исправленный *.dcu или *.pas ? Или же просто HOW-TO для самостоятельной правки. Думаю это весьма полезная информация.

Заранее спасибо ! В первую очередь огромное спасибо за предоставленную мне помощь !

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Для RAD Studio XE7

Начиная с RAD Studio XE7 Доступ к хендлу приложения можно получить так FMX.Platform.Win.ApplicationHWND

 

Для версий < XE7

Для всех, у кого среда <= XE6 делаем следующее:

  • Открываем исходный файл FMX.Platform.Win.pas (Предполагаемое место расположения файла "/Program Files(x86)/Embarcadero/Studio/14.0/Source/fmx/")
  • В секцию interface модуля объявляем функцию:
    function ApplicationHWND: HWND;
  • В секцию implementation модуля добавляем ее реализацию (лучше в конец модуля либо после объявления глобальной переменной PlatformWin):
    function ApplicationHWND: HWND;
    begin
      if PlatformWin <> nil then
        Result := PlatformWin.GetApplicationHWND
      else
        Result := 0;
    end;
  • Добавляем модифицированный файл FMX.Platform.Win.pas в ваш проект.

P.S. Исходники коммерческих продуктов выкладывать запрещено. Поэтому выше приведено руководство.

Ссылка на комментарий
  • 0
  1. А лучше удалить FMX.Platform.Win.dcu из каталогов Debug и Release среды
  2. Добавить в проект модифицированный pas-файл
  3. Скомпилировать проект
  4. Скопировать FMX.Platform.Win.dcu из папки с проектом в директории среды 

Тогда отпадет необходимость постоянно добавлять pas-файл. Еще раз - спасибо !

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...