|
Вопрос # 3 752/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Подскажите, пожалуйста, как анимировать иконку в системном трее ?
Где и что нужно добавить или исправит в коде ?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- program Project1;
-
- uses
- Forms,
- Unit1 in 'Unit1.pas' {Form1},
- StopTwoCopyExe in 'StopTwoCopyExe.pas';
-
- {$R *.res}
- const
- UniqueString = 'Form1';
-
-
- begin
- if 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;
-
- var
- mut: thandle;
-
- function mut_id(s: string): string;
- var
- f: integer;
- begin
- result := s;
- for f := 1 to length(s) do
- if result[f] = '' then
- result[f] := '_';
- end;
-
- function Init_Mutex(mid: string): boolean;
- begin
- Mut := CreateMutex(nil, false, pchar(mut_id(mid)));
- Result := not ((Mut = 0) or (GetLastError = ERROR_ALREADY_EXISTS));
- end;
-
- initialization
- mut := 0;
- finalization
- if mut <> 0 then
- CloseHandle(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;
- begin
- if Msg.CmdType = SC_MINIMIZE
- then
-
- Form1.Hide
- else
- inherited;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- var
- nid : TNotifyIconData;
- begin
-
-
- with nid do
- begin
-
- 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 > 1
- then
- iconindex := 0;
- end;
-
- procedure TForm1.PopupMenu1Popup(Sender: TObject);
- begin
- SetForegroundWindow(Form1.Handle);
- end;
-
- procedure TForm1.IconCallBackMessage( var Mess : TMessage );
- begin
- case 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);
- begin
- Form1.Close
- end;
-
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- var
- nid : TNotifyIconData;
- begin
- with nid do
- begin
-
-
-
-
- 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);
- begin
- Form1.Close
- end;
-
- end.
-
 |
Вопрос задал: Kyran29 (статус: Посетитель)
Вопрос отправлен: 10 февраля 2010, 01:37
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 10 февраля 2010, 08:12; участников в обсуждении: 1.
|
min@y™ (статус: Доктор наук), 10 февраля 2010, 08:12 [#1]:
Код не читал, т.к. он без подсветки и форматирования.
Советую выкинуть его совсем, особенно, если не понимаешь, что этот код делает, и юзать компонент TCoolTrayIcon. Если по каким-то причинам заюзать этот компонент нельзя, то внимательно кури интернет.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|