Главная страница
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.043 c
5-1093549702
Jetus
2004-08-26 23:48
2005.10.30
Выделение дней в календаре


14-1128689265
oldman
2005-10-07 16:47
2005.10.30
Мельпомена и Терпсихора. (наверное, таки опрос)


4-1125140770
NikNet
2005-08-27 15:06
2005.10.30
Как правельно использовать GetFullPathName?


14-1128718115
LordOfRock
2005-10-08 00:48
2005.10.30
Narod.Ru


2-1128759906
KLOD
2005-10-08 12:25
2005.10.30
помогите пожалуйста считать из типизированного файла записи