Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

Сообщение из трея   Найти похожие ветки 

 
Аноним   (2005-10-09 14:07) [0]

Очень нужно  и очень быстро. Пожалуйста, подскажите: как сделать такое же сообщение, как то, которое появляется когда XP находит новое оборудование и т.п.


 
Zeqfreed ©   (2005-10-09 14:48) [1]

Аноним   (09.10.05 14:07)
uses
ShellAPI;

...

const
WM_TRAYMSG = WM_USER + 400;

NIIF_NONE = $00000000;
NIIF_INFO = $00000001;
NIIF_WARNING = $00000002;
NIIF_ERROR = $00000003;

NIF_STATE = $00000008;
NIF_INFO = $00000010;
NIF_GUID = $00000020;

type
TBalloonHintIcon = (bitNone, bitInfo, bitWarning, bitError);
TBalloonHintTimeOut = 10..60;

TTimeoutOrVersion = record
 case Integer of
  0: (uTimeout: UINT);
  1: (uVersion: UINT);
end;

TNotifyIconDataEx = record
 cbSize: DWORD;
 Wnd: HWND;
 uID: UINT;
 uFlags: UINT;
 uCallbackMessage: UINT;
 hIcon: HICON;
 szTip: array[0..127] of AnsiChar; // Previously 64 chars, now 128
 dwState: DWORD;
 dwStateMask: DWORD;
 szInfo: array[0..255] of AnsiChar;
 TimeoutOrVersion: TTimeoutOrVersion;
 szInfoTitle: array[0..63] of AnsiChar;
 dwInfoFlags: DWORD;
 {$IFDEF _WIN32_IE_600}
 guidItem: TGUID;
 {$ENDIF}
end;

...

var
...
 TrayData : TNotifyIconDataEx;
 TrayEnabled : Boolean = false;

...

function MakeTrayIcon(const ParentWnd : HWND; const Hint : String) : boolean;
begin
ZeroMemory(@TrayData, SizeOf(TNotifyIconDataEx));
with TrayData do begin
 cbSize := SizeOf(TrayData);
 Wnd := ParentWnd;
 uID := 123;
 uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
 uCallbackMessage := WM_TRAYMSG;
 hIcon := Application.Icon.Handle;
 Move(PChar(Hint)^, szTip, length(Hint));
end;

TrayEnabled := Shell_NotifyIcon(NIM_ADD, @TrayData);
Result := TrayEnabled;
end;

procedure FreeTrayIcon;
begin
if TrayEnabled then Shell_NotifyIcon(NIM_DELETE, @TrayData);
end;

procedure UpdateTrayHint(const newHint : String);
begin
ZeroMemory(@TrayData.szTip, SizeOf(TrayData.szTip));
Move(PChar(newHint)^, TrayData.szTip, length(newHint));
TrayData.uFlags := NIF_TIP;
Shell_NotifyIcon(NIM_MODIFY, @TrayData);
end;

function HideBalloonHint(const ParentWnd : HWND) : boolean;
var
NID : TNotifyIconDataEx;
begin
NID.cbSize := SizeOf(NID);
NID.Wnd := ParentWnd;
NID.uID := 123;
NID.uFlags := NIF_INFO;
NID.szInfo := "";

Result := Shell_NotifyIcon(NIM_MODIFY, @NID);
end;

function ShowBalloonHint(const ParentWnd : HWND;
                        const Title, Text: String;
                        const IconType: TBalloonHintIcon;
                        const TimeoutSecs: TBalloonHintTimeOut): boolean;
const
aBalloonIconTypes: array[TBalloonHintIcon] of Byte = (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR);
var
NID : TNotifyIconDataEx;
begin
HideBalloonHint(ParentWnd);
NID.cbSize := SizeOf(NID);
NID.Wnd := ParentWnd;
NID.uID := 123;
NID.uFlags := NIF_INFO;

StrLCopy(NID.szInfo, PChar(Text), SizeOf(NID.szInfo)-1);
StrLCopy(NID.szInfoTitle, PChar(Title), SizeOf(NID.szInfoTitle)-1);

NID.TimeoutOrVersion.uTimeout := TimeoutSecs * 1000;
NID.dwInfoFlags := aBalloonIconTypes[IconType];

Result := Shell_NotifyIcon(NIM_MODIFY, @NID);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MakeTrayIcon(Handle, "Hint");
ShowBalloonHint(Handle, "Demo", "This is a balloon hint", bitInfo, 10);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
HideBalloonHint(Handle);
FreeTrayIcon();
end;

...


Примерно так. И здесь нет обработки сообщения (WM_TRAYMSG в примере) от иконки.



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

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
2-1128601635
koks
2005-10-06 16:27
2005.10.30
Как запретить одновременный запуск нескольких копий пронграммы


3-1127292171
Каспер
2005-09-21 12:42
2005.10.30
Обработчик AfterScroll, в ADOQuery


6-1120982160
Jetus
2005-07-10 11:56
2005.10.30
Как организовать Proxy-сервер?


2-1128877527
дендроид
2005-10-09 21:05
2005.10.30
как извлечь корень n-ной степени?


2-1128958528
Bobby Digital
2005-10-10 19:35
2005.10.30
функция Random