| 
| 
 | Вопрос # 3 752/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!
 Подскажите, пожалуйста, как анимировать иконку в системном трее ?
 Где и что нужно добавить или исправит в коде ?
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) Приложение:Переключить в обычный режим program Project1; uses  Forms,  Unit1 in 'Unit1.pas' {Form1},  StopTwoCopyExe in 'StopTwoCopyExe.pas'; {$R *.res}   const  UniqueString = 'Form1';  beginif not init_mutex(UniqueString) then begin  Application.Initialize;  Application.CreateForm(TForm1, Form1);  Application.ShowMainForm:=False;  Application.Run;  end;end ///////////////////////////////////////////////////////////////////////////////////////////// unit StopTwoCopyExe; interface function Init_Mutex(mid: string): boolean; implementation uses Windows; varmut: thandle; function mut_id(s: string): string;varf: integer;beginresult := s;for f := 1 to length(s) doif result[f] = '' thenresult[f] := '_';end; function Init_Mutex(mid: string): boolean;beginMut := CreateMutex(nil, false, pchar(mut_id(mid)));Result := not ((Mut = 0) or (GetLastError = ERROR_ALREADY_EXISTS));end; initializationmut := 0;finalizationif mut <> 0 thenCloseHandle(mut);end. ///////////////////////////////////////////////////////////////////////////////////////////// unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ImgList, Menus, ExtCtrls,ShellApi, StdCtrls; type  TForm1 = class(TForm)    ImageList1: TImageList;    Timer1: TTimer;    PopupMenu1: TPopupMenu;    Form11: TMenuItem;    Exit1: TMenuItem;    Button1: TButton;    procedure FormCreate(Sender: TObject);    procedure Timer1Timer(Sender: TObject);    procedure FormClose(Sender: TObject; var Action: TCloseAction);    procedure Exit1Click(Sender: TObject);    procedure PopupMenu1Popup(Sender: TObject);    procedure Form11Click(Sender: TObject);    procedure Button1Click(Sender: TObject);   private    procedure WMSysCommand(var Msg: TWMSysCommand);message WM_SYSCOMMAND;    { Private declarations }  public      procedure IconCallBackMessage( var Mess : TMessage ); message WM_USER + 100;    { Public declarations }  end; var  Form1: TForm1;  iconindex : Integer;implementation {$R *.dfm} procedure TForm1.WMSysCommand;beginif Msg.CmdType = SC_MINIMIZEthen Form1.Hideelseinherited;end; procedure TForm1.FormCreate(Sender: TObject); var nid : TNotifyIconData;begin  with nid dobegin cbSize := SizeOf( TNotifyIconData );  Wnd := Form1.Handle; uID := 0;  uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;  uCallbackMessage := WM_USER + 100;StrPCopy(szTip,'Form1');  hIcon := Application.Icon.Handle;end; Shell_NotifyIcon( NIM_ADD, @nid );end; procedure TForm1.Timer1Timer(Sender: TObject);begin ImageList1.GetIcon(iconindex, Application.Icon);iconindex := iconindex + 1;if iconindex > 1theniconindex := 0;end; procedure TForm1.PopupMenu1Popup(Sender: TObject);beginSetForegroundWindow(Form1.Handle);end; procedure TForm1.IconCallBackMessage( var Mess : TMessage );begincase Mess.lParam of WM_RBUTTONUP : Form1.PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);end;end; procedure TForm1.Form11Click(Sender: TObject);begin Form1.Show;Form1.Activate;ShowWindow(Application.Handle, SW_HIDE);end; procedure TForm1.Exit1Click(Sender: TObject);beginForm1.Closeend; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);varnid : TNotifyIconData;beginwith nid dobegin    cbSize := SizeOf( TNotifyIconData );Wnd := Form1.Handle;uID := 0;uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;uCallbackMessage := WM_USER + 100;hIcon := Application.Icon.Handle;end;Shell_NotifyIcon( NIM_DELETE, @nid );end; procedure TForm1.Button1Click(Sender: TObject);beginForm1.Closeend; end. 
|  |   Вопрос задал: Kyran29 (статус: Посетитель)Вопрос отправлен: 10 февраля 2010, 01:37
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 10 февраля 2010, 08:12; участников в обсуждении: 1. 
|   | min@y™ (статус: Доктор наук), 10 февраля 2010, 08:12 [#1]:Код не читал, т.к. он без подсветки и форматирования. Советую выкинуть его совсем, особенно, если не понимаешь, что этот код делает, и юзать компонент TCoolTrayIcon. Если по каким-то причинам заюзать этот компонент нельзя, то внимательно кури интернет.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |