Форум: "Основная";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизСообщение из трея Найти похожие ветки
← →
Аноним (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c