Необходимо сворачивать приложение в иконку, в SysTray.
» Иконка в SysTray
Буду писать на Делфях. Переведешь потом во что хочешь.
1. Определяешь тип:
TNotifyIconData = record
cbSize: DWord;
Wnd: HWND;
uID: Uint;
uFlags: Uint;
uCallbackMessage: Uint;
hIcon: HIcon;
szTip: array [0..63] of AnsiChar;
end;
Затем у тебя есть главная форма. Определяешь ее создание так:
constructor TfrmMain.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FNotifyIconData.cbSize:= SizeOf(TNotifyIconData);
FNotifyIconData.hIcon:= Application.Icon.Handle;
StrPCopy(FNotifyIconData.szTip,Application.Title);
FNotifyIconData.uCallbackMessage:= TRAY_MSG;
FNotifyIconData.uFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;
FNotifyIconData.uID:=1;
FNotifyIconData.Wnd:= frmMain.Handle;
Shell_NotifyIcon(NIM_ADD,@FNotifyIconData);
end;
(В данном случае главная форма СРАЗУ сворачивается в SysTray и необходимо сделать еще в проекте Application.ShowMainForm:= False)
Что не понятно - пиши т.к. это в кратце. Но у меня все работает.
А вообще посмотри в "Делфи 5 Руководство разработчика" - великая книга!
1. Определяешь тип:
TNotifyIconData = record
cbSize: DWord;
Wnd: HWND;
uID: Uint;
uFlags: Uint;
uCallbackMessage: Uint;
hIcon: HIcon;
szTip: array [0..63] of AnsiChar;
end;
Затем у тебя есть главная форма. Определяешь ее создание так:
constructor TfrmMain.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FNotifyIconData.cbSize:= SizeOf(TNotifyIconData);
FNotifyIconData.hIcon:= Application.Icon.Handle;
StrPCopy(FNotifyIconData.szTip,Application.Title);
FNotifyIconData.uCallbackMessage:= TRAY_MSG;
FNotifyIconData.uFlags:= NIF_MESSAGE or NIF_ICON or NIF_TIP;
FNotifyIconData.uID:=1;
FNotifyIconData.Wnd:= frmMain.Handle;
Shell_NotifyIcon(NIM_ADD,@FNotifyIconData);
end;
(В данном случае главная форма СРАЗУ сворачивается в SysTray и необходимо сделать еще в проекте Application.ShowMainForm:= False)
Что не понятно - пиши т.к. это в кратце. Но у меня все работает.
А вообще посмотри в "Делфи 5 Руководство разработчика" - великая книга!
Daemon
Спасибо.
Только, забыл добавить, что сворачивать надо в VC++. Sorry.
Спасибо.
Только, забыл добавить, что сворачивать надо в VC++. Sorry.
imaG
На самом деле не имеет значение в чем писать. В любом случае используется функция API Shell_NotifyIcon
А принцип использования я тебе написал. Дерзай. Если что - все равно пиши.
На самом деле не имеет значение в чем писать. В любом случае используется функция API Shell_NotifyIcon
А принцип использования я тебе написал. Дерзай. Если что - все равно пиши.
Несколько замечаний
TNotifyIconData тип уже определен в модуле shellapi
соответственно для VC в хейдере shellapi.h определен тип NOTIFYICONDATA
Посмотри http://www.webprog.vov.ru/components/index.shtml?id=5
Там на Delphi простейшая реализация IkonTray
TNotifyIconData тип уже определен в модуле shellapi
соответственно для VC в хейдере shellapi.h определен тип NOTIFYICONDATA
Посмотри http://www.webprog.vov.ru/components/index.shtml?id=5
Там на Delphi простейшая реализация IkonTray
OK.
Всё получилось, всем спасибо.
Всё получилось, всем спасибо.
привет всем
значит такая беда ...
есть приложение которое сворачиваеться в systray и нужно сделать для него right click меню которое !!! будет изменяться во время выполнения программы посоветуйте компанент или как это на API написать если это возможно? заранее всех благадарю!
значит такая беда ...
есть приложение которое сворачиваеться в systray и нужно сделать для него right click меню которое !!! будет изменяться во время выполнения программы посоветуйте компанент или как это на API написать если это возможно? заранее всех благадарю!
Farch
Используй обычный TPopupMenu, а вот вызывать его (показывать) придется через win messages. Обрабатывай сообщения приложения и лови правый клик!
Используй обычный TPopupMenu, а вот вызывать его (показывать) придется через win messages. Обрабатывай сообщения приложения и лови правый клик!
UncoNNecteD
я в этом новечёк есть где нить статьи или можешь рассказать поподробнее но уже и за это стпасибо!
я в этом новечёк есть где нить статьи или можешь рассказать поподробнее но уже и за это стпасибо!
UncoNNecteD
а он с иконкой будет пахать?
Wowik
блин, че-то не грузиться...
а он с иконкой будет пахать?
Wowik
блин, че-то не грузиться...
Могу прислать пример использования с исходниками на C++ - создание иконки, добавление popup-меню, обработка вызова меню.
Все на чистом Win32 API.
Все на чистом Win32 API.
Farch
Послал
Послал
dremon
thanks!
thanks!
специалистам вопрос по trayicon. Как получить список иконок(handle) для дальнейшей с ними работы(имитация кликов на них...)?
ironwit
Цитата:
Никак. В трее, собственно, нет иконок. Там просто картинки, которые отрисовывает explorer. Он же отслеживает мышь и шлет события окнам.
Цитата:
Как получить список иконок(handle)
Никак. В трее, собственно, нет иконок. Там просто картинки, которые отрисовывает explorer. Он же отслеживает мышь и шлет события окнам.
Хорошо, уточним.
Как сэмулировать нажатие клавиши мышки над строго определенной иконкой(окном) и работать с открытым Popup-ом?
Как сэмулировать нажатие клавиши мышки над строго определенной иконкой(окном) и работать с открытым Popup-ом?
ironwit
Просто шли мессадж нужному приложению.
EndoR
там не иконка как уже написали.
Просто шли мессадж нужному приложению.
EndoR
там не иконка как уже написали.
как послать сообщение например ICQ?
ironwit
FindWindow() - находишь окно ICQ. Оно найдется, даже если свернуто в трей. SendMessage() - шлешь сообщение.
FindWindow() - находишь окно ICQ. Оно найдется, даже если свернуто в трей. SendMessage() - шлешь сообщение.
имеется в виду системное сообщение программе(процессу) ICQ.
так как f_serg сказал
немного разобрался. Но возник следующий вопрос - как получить список иконок(handle,имя, размер...) отображенных в systemtray?
ironwit
Это не нужно.
Это не нужно.
хорошо, тогда такой вопрос.
как можно отправить иконке аськи в трее щелчок правой клавишей мишки?
Добавлено
ок. получилось поиметь список всех хендлов. как теперь известному хендлу ICQ отправить сообщение о нажатой клавише на мышке?
как можно отправить иконке аськи в трее щелчок правой клавишей мишки?
Добавлено
ок. получилось поиметь список всех хендлов. как теперь известному хендлу ICQ отправить сообщение о нажатой клавише на мышке?
ironwit
Почитай о WinAPI. Документацию, мануалы...
Ты чтоже, за каждым идентификатором будешь сюда постить?
Это же не справочник! Учись пользоватся литературой!
Принципиально тебе объяснили, а конкретику сам додумывай! Иначе какой из тебя программист?
Удачи!
Почитай о WinAPI. Документацию, мануалы...
Ты чтоже, за каждым идентификатором будешь сюда постить?
Это же не справочник! Учись пользоватся литературой!
Принципиально тебе объяснили, а конкретику сам додумывай! Иначе какой из тебя программист?
Удачи!
ладно, ладно че ругаешься.
просто практически первый раз работаю с таким. :-)
просто практически первый раз работаю с таким. :-)
Пардоньте, но я не понял как прменять иконку во время исполнения программы
pbromiks
NOTIFYICONDATA lpData;
lpData.cbSize = sizeof(lpData);
.......
lpData.hIcon = MyNewIcon; // Здесь любая иконка.
.......
Shell_NotifyIcon(NIM_MODIFY, &lpData);
NOTIFYICONDATA lpData;
lpData.cbSize = sizeof(lpData);
.......
lpData.hIcon = MyNewIcon; // Здесь любая иконка.
.......
Shell_NotifyIcon(NIM_MODIFY, &lpData);
Спасибочки...... Попробую....
Только вот мерцание во время смены иконки.
Подскажите плз как избавиться?
Подскажите плз как избавиться?
Предыдущая тема: нуна помощь по Си:)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.