Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Форма - hint |
Автор: neweraser 15.6.2018, 17:33 | ||||
Я наверное зачастил на форуме ![]() ![]() Проблема вот в чем: Есть форма, которую собираюсь использовать как хинт из приложения, которое свернуто в трей. Вот код, если кому инетресно (в дальнейшем планирую размещать на ней свои компоненты:
Выглядит она вот так: https://imgbb.com/ Рисую и в правый нижний угол ставлю так:
Как сделать, чтобы эта подсказка "хвостиком" указывала на иконку приложения в трее, а не на правый нижний угол? ps. Я разделом не ошибся? А то во все по очереди пишу ![]() |
Автор: neweraser 15.6.2018, 22:39 | ||||
В общем, пришел к выводу, что нужно найти хэндл или координаты иконки в трее, а потом уже от них отталкиваться.
Штатными средствами, как я понял, это сложно сделать, наткнулся на Cool Tray Icon, в котором есть функция
Но она возвращает только позицию курсора внутри иконки, и то если мышка наведена, правильно? Вот, кстати, тут обсуждалось http://forum.vingrad.ru/forum/topic-263233.html Потом набрел на http://rouse.drkb.ru/winapi.php#fwsystrayinfo, который вроде как может помочь, но как именно я пока не догоняю, наверное, пора спать. |
Автор: Romikgy 16.6.2018, 23:26 | ||
находите ToolbarWindow32 , перебираете все окна GetWindowThreadProcessId(Wnd, @CurrentPID); находите пид процесса и сравниваете со своим ... совпадает, у окна берете координаты и отрисовываете свое окно по координатам |
Автор: neweraser 18.6.2018, 10:21 | ||||||||||
Romikgy, не выходит так.. сейчас приведу код с комментариями:
В мемо загружается вот это:
|
Автор: neweraser 18.6.2018, 11:16 | ||||
Блин. Я уже согласен использовать любой компонент, что угодно. Столько времени потерять. Ну или хотя бы найти координаты трея? Если рисую форму по этим
то она оказывается вообще в верхнем левом углу ![]() |
Автор: neweraser 18.6.2018, 14:09 | ||
Немного косякнул, для трея надо так:
А вообще сейчас пробую через Cool Tray Icon по функции TrayIcon.SetFocus отловить хэндл сфокусированной иконки |
Автор: neweraser 18.6.2018, 17:16 | ||
Нашлось решение, может кому пригодится. В сети действительно очень много вопросов по этому поводу, но работающего кода я так и не нашел. Жаль, что не получилось без сторонних компонентов, хотя можно покопаться в исходниках Cool Tray Icon и отталкиваться оттуда. Но, так как я и так использую у себя в проекте этот компонент - мне не за чем ![]() Привожу код:
Со стандартной темой windows (NT) не работает ![]() |