|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Панель инструментов
Люди подскажите как мне можно чтобы моя прога добавлялась в панель задач к это делает ВинДос Медиа Плаер ?
|
#2
|
|||
|
|||
Это можно итак сделать просто. Нажми на панель задач правой кнопкой мыши. Далее действуй:
Панели Инструментов>Создать Панель Инстреументов... И выбираешь свою программу.. НичеНепонимаю Савсем! Кто объяснит мне тот получит конфетку!!! |
#3
|
|||
|
|||
Цитата:
как это сделать программно? другими словами, как форму сделать панелью на панели задач? |
#4
|
||||
|
||||
Цитата:
Необходимо найти хэндл панели задач FindWindow - это классы Shell_trayWnd -> SysTabControl32 Получить дескриптор устройства GetDC Отрисовать свою форму на этом дескрипторе --------------------------------------------- Программирование - не профессия, а стиль жизни |
#5
|
|||
|
|||
Код:
const { Сообщения от пиктограммы на панели задач } IconMessage = WM_User + 300; type TfmMain = class(TForm) pmIcon: TPopupMenu; // Меню для пиктограммы pmIconSetup: TMenuItem; pmIconabout: TMenuItem; pmIconClose: TMenuItem; ... private { Private declarations } FIcon: TIcon; // Новая пиктограмма FiOldIcon: Integer; // Старая пиктограмма ... procedure OnWinIconMes(var AMessage: TMessage); message IconMessage; function TrayMessage(const iList: Integer; const dwMessage, Flags: LongWord): Boolean; ... procedure TfmMain.FormCreate(Sender: TObject); ... FIcon:= TIcon.Create; FiOldIcon:= 0; TrayMessage(FiOldIcon, NIM_Add, NIF_ICON or NIF_MESSAGE or NIF_TIP); ... end; procedure TfmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean); ... { Icon } FiOldIcon:= 0; TrayMessage(FiOldIcon, NIM_Delete, 0); end; procedure TfmMain.FormDestroy(Sender: TObject); begin FIcon.Free; end; // FormDestroy function TfmMain.TrayMessage(const iList: Integer; const dwMessage, Flags: LongWord): Boolean; var tnd: TNotifyIconData; begin with tnd do begin cbSize:= SizeOf(TNotifyIconData); Wnd:= Handle; uID:= 1; uFlags:= Flags; uCallbackMessage:= IconMessage; ImageList1.GetIcon(iList, FIcon); { В ImageList1 поместить разные пиктограммки, iList - это номер } hIcon:= FIcon.Handle; szTip:= 'Всплывающее название'#0; end; Result:= Shell_NotifyIcon(dwMessage, @tnd); end; // TrayMessage { Я решаю менять пиктограмму или нет в таймере } procedure TfmMain.TimerUpdateTimer(Sender: TObject); var iNewIcon: Integer; begin iNewIcon:= по какому-то правилу; if iNewIcon <> FiOldIcon then begin FiOldIcon:= iNewIcon; // Запоминаем новое состояние пиктограммы TrayMessage(FiOldIcon, NIM_Modify, NIF_ICON); end; end; // TimerUpdateTimer procedure TfmMain.OnWinIconMes(var AMessage: TMessage); var P: TPoint; begin case AMessage.LParam of WM_LButtonDown: begin { SetForegroundWindow(Handle); GetCursorPos(P); pmIcon.Popup(P.X, P.Y);} end; WM_LButtonDblClk: begin SetForegroundWindow(Handle); pmIcon.Items[0].Click; // Пункт меню по умолчанию end; WM_RButtonDown: begin SetForegroundWindow(Handle); GetCursorPos(P); pmIcon.Popup(P.X, P.Y); end; end; // case AMessage.LParam end; // OnWinIconMes |
#6
|
|||
|
|||
спасибо mav_c и AlexSku,
очень помогли! |