Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Вниз

Прога в трее   Найти похожие ветки 

 
Profik ©   (2005-07-20 18:37) [0]

Как мне свернуть прогу в трей? Помогитееееееее


 
Цымбал   (2005-07-20 18:38) [1]

В трубочку сворачивай, можно попалам несколько раз свернуть...
Лучьше факи читай....


 
Kerk ©   (2005-07-20 18:40) [2]

Компонент добавляет вышу прогу в трэй.
http://kladovka.net.ru/index.cgi?pid=list&rid=44

Один из множества. А лучше факи читай.


 
Digitman ©   (2005-07-20 18:42) [3]

никак

"проги" не "сворачиваются в трей" - это тебе не папирус

в трей "запуздыриваются иконки" - не более того

просмотри "Орешник", там есть ссылки


 
DVM ©   (2005-07-21 10:40) [4]


> в трей "запуздыриваются иконки" - не более того

если быть совсем точным - в трей иконки не запуздыриваются, иконки запуздыриваются в область уведомлений или индикаторов по другому.


 
Trimp ©   (2005-07-21 15:37) [5]

Листинг программы.
При открытии прога не видна, виден лишь её значок в трее. При  клике на значок вылазит PopupMenu и предлагает некоторые операции, которые может сделать прога. Очень полезный пример для обучения. Простой.

unit shellUnit;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, Menus;

const
WM_MYICONNOTIFY = WM_USER + 123;

type
 TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   RestoreItem: TMenuItem;
   N1: TMenuItem;
   FileExitItem1: TMenuItem;
   HideItem: TMenuItem;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure RestoreItemClick(Sender: TObject);
   procedure HideItemClick(Sender: TObject);
   procedure FileExitItem1Click(Sender: TObject);
 private
   { Private declarations }
   ShownOnce: Boolean;
 public
   { Public declarations }
   procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
   procedure WMSYSCOMMAND(var msg: TMessage);message WM_SYSCOMMAND;
   procedure RestoreMainForm;
   procedure HideMainForm;
   procedure CreateTrayIcon(n:Integer);
   procedure DeleteTrayIcon(n:Integer);
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}
uses ComObj,  activex, ShellApi, shlobj, registry;

procedure TForm1.WMICON(var msg: TMessage);
var P : TPoint;
begin
case msg.LParam of
WM_LBUTTONDOWN:
 begin
  GetCursorPos(p);
  SetForegroundWindow(Application.MainForm.Handle);
  PopupMenu1.Popup(P.X, P.Y);
 end;
WM_LBUTTONDBLCLK : RestoreItemClick(Self);
end;
end;

procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
inherited;
if (Msg.wParam=SC_MINIMIZE) then HideItemClick(Self);
end;

procedure TForm1.HideMainForm;
begin
 Application.ShowMainForm := False;
 ShowWindow(Application.Handle, SW_HIDE);
 ShowWindow(Application.MainForm.Handle, SW_HIDE);
end;

procedure TForm1.RestoreMainForm;
var i,j : Integer;
begin
 Application.ShowMainForm := True;
 ShowWindow(Application.Handle, SW_RESTORE);
 ShowWindow(Application.MainForm.Handle, SW_RESTORE);
 if not ShownOnce then
 begin
   for I := 0 to Application.MainForm.ComponentCount -1 do
     if Application.MainForm.Components[I] is TWinControl then
       with Application.MainForm.Components[I] as TWinControl do
         if Visible then
         begin
           ShowWindow(Handle, SW_SHOWDEFAULT);
           for J := 0 to ComponentCount -1 do
             if Components[J] is TWinControl then
               ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
         end;
   ShownOnce := True;
 end;

end;

procedure TForm1.CreateTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
with nidata do
 begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := Self.Handle;
  uID := 1;
  uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  uCallBackMessage := WM_MYICONNOTIFY;
  hIcon := Application.Icon.Handle;
  StrPCopy(szTip,Application.Title);
 end;
 Shell_NotifyIcon(NIM_ADD, @nidata);
end;

procedure TForm1.DeleteTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
with nidata do
 begin
  cbSize := SizeOf(TNotifyIconData);
  Wnd := Self.Handle;
  uID := 1;
 end;
 Shell_NotifyIcon(NIM_DELETE, @nidata);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ShownOnce:= False;
CreateTrayIcon(1);
HideItem.Enabled := False;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteTrayIcon(1);
end;

procedure TForm1.RestoreItemClick(Sender: TObject);
begin
RestoreMainForm;
DeleteTrayIcon(1);
RestoreItem.Enabled := False;
HideItem.Enabled := True;
end;

procedure TForm1.HideItemClick(Sender: TObject);
begin
HideMainForm;
CreateTrayIcon(1);
HideItem.Enabled := False;
RestoreItem.Enabled := True;
end;

procedure TForm1.FileExitItem1Click(Sender: TObject);
begin
Close;
end;

end.


 
Fay ©   (2005-07-21 16:06) [6]

2 Trimp ©   (21.07.05 15:37) [5]
>> const
>>  WM_MYICONNOTIFY = WM_USER + 123;
Не лучшее решение. Вам очевидно, что Вы можете использовать это соомщение?

>> procedure CreateTrayIcon(n:Integer);
>> procedure DeleteTrayIcon(n:Integer);

Что такое n : Integer ?

Зачем
>> procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
>> procedure WMSYSCOMMAND(var msg: TMessage);message WM_SYSCOMMAND;
>> procedure RestoreMainForm;
>> procedure HideMainForm;
>> procedure CreateTrayIcon(n:Integer);
>> procedure DeleteTrayIcon(n:Integer);
в public ?

Что будет, если не выбирать ничего из PopupMenu1 ?


 
Trimp ©   (2005-07-21 16:54) [7]

2 Fay
У меня нет времени тебе объяснять, но попробуй посмотреть свой ящик
Возможно там есть статья из которой я взял этот листинг. Там есть все объяснения


 
Trimp ©   (2005-07-21 17:03) [8]

Насчёт n:Intеger действительно косяк автора. n:Intеger будет не бесполезным если все UId в процедурах CreateTrayIcon и  DeleteTrayIcon будут равняться не 1, а n. и с помощью n можно делать несколько иконок в трее. А n это ID  каждой иконки.


 
Fay ©   (2005-07-21 17:09) [9]

2 Trimp ©   (21.07.05 16:54) [7]
Уважаемый Хлюпин Артём Иванович!
Письмо Ваше получил и даже ответил на него.
В статье нет ничего о том, что я спросил (хотя этот n там используется).
>> У меня нет времени тебе объяснять
Думаю, что дело не во времени - сейчас же каникулы!

З.Ы.
Заявление (в статье)
>> Примечание
>> He забывайте уничтожать созданные вами значки на System Tray.
>> Это не делается автоматически даже при закрытии приложения.
>> Значок будет удален только после перезагрузки системы.
достойно отдельной похвалы!


 
Trimp ©   (2005-07-21 17:30) [10]

Уважаемый Fay вы не находите то, что вы пытаетесь идти на конфликт (совершенно никому не нужный). Я пытался вам помочь, но не вижу никакой благодарности. Я специально просмотрел многие ваши посты, ответы. Вы никогда не спрашиваете, вы только отвечаете. И вы редко отвечаете по сути. И меня не в первый раз пытаетесь завести. Но я умней не смотря на то, что я младше вас на 14 лет. Есть в форумах люди, которые пытаются показать своё превосходство, но форумы не для этого. Я уверен, что у вас есть какой то комплекс. Может вас  не так уважают как вы бы хотели. Я думаю, что человеку которому почти 30 стоит заниматься вещами по серьёзнее.
А насчёт почему я занят. Я разрабатываю один проект. Времени как вы не теряю.:)


 
Fay ©   (2005-07-21 17:37) [11]

2 Trimp ©   (21.07.05 17:30) [10]
Я понял.
1) Спасибо за помошь! Я в ней не нуждался, но был очень тронут.
2) Я задал вопросы, которые Вы не удосужились задать себе.
3) Суть вопроса не обязательно присутствует в самом вопросе.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.016 c
4-1122112344
Vir
2005-07-23 13:52
2005.09.11
Hardware ID


4-1121892537
Dot
2005-07-21 00:48
2005.09.11
загрузка процессора


11-1106905612
MTsv DN
2005-01-28 12:46
2005.09.11
МультиВыбор в OpenSaveDialog


4-1122033529
KSergey
2005-07-22 15:58
2005.09.11
Как узнать владельца процесса?


3-1122901908
Начинающий3
2005-08-01 17:11
2005.09.11
TADOQUERY





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский