Сделай сам: IE и Delphi – вместе веселее!
28.01.2008 от Иван Ширко//процедура обработки нажатия "горячих" клавиш
procedure hotykey(var msg:TWMHotkey); message WM_HOTKEY;
Запишите процедуру для события OnCreate формы:
procedure TForm1.FormCreate(Sender: TObject);
begin
//заполняем информацию об иконке
with TrayIconData do
begin
cbSize := SizeOf(TrayIconData);
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := application.icon.handle;
szTip := 'My TrayIcon!';
end;
//добавляем иконку в SysTray
Shell_NotifyIcon(NIM_ADD, @TrayIconData);
//регистрируем "горячие" клавиши Alt+P
RegisterHotKey(handle, 1,.MOD_Alt, 80);
//регистрируем "горячие" клавиши Alt+Q
RegisterHotKey(handle, 2,.MOD_Alt, 81);
//регистрируем "горячие" клавиши Alt+R
RegisterHotKey(handle, 3,.MOD_Alt, 82);
end;
Теперь процедура при уничтожении формы:
procedure TForm1.FormDestroy(Sender: TObject);
begin
//удаляем иконку
ShellApi.Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
//удаляем "горячие" клавиши
UnRegisterHotKey(handle, 1);
UnRegisterHotKey(handle, 2);
UnRegisterHotKey(handle, 3);
end;
//обработка сообщений от иконки
procedure TForm1.TrayMessage(var Msg: TMessage);
var
p: TPoint;
begin
case Msg.lParam of
//если нажата правая кнопка мыши,
WM_RBUTTONDown, WM_RBUTTONDBLCLK:
begin
SetForegroundWindow(handle);
GetCursorPos(p);
//то показываем наше меню в текущей позиции курсора
popupmenu1.Popup(p.x,p.y);
end;
end;
end;
//нажатие на "горячие" клавиши
procedure TForm1.hotykey(var msg:TWMHotkey);
var
n: Integer;
begin
n := msg.HotKey;
//если нажали Alt+P, то закрываем все окна IE
if (n=1) then CloseAllIE_2;
else
//если нажали Alt+Q, то переход "Вперёд"
if (n=2) then NextPage
else
//если нажали Alt+R, то переход "Назад"
if (n=3) then PrevPage;
end;
На этом создание программы, которая расширяет функциональность браузера Internet Explorer, завершено. Мы научились:
1) работать с "горячими" клавишами;
2) помещать иконку на Системную панель;
3) работать с сообщениями и окнами.
На сегодня всё.
Иван Ширко
ishyrko@gmail.com
Рубрики: Delphi, Сделай сам |
28.06.2009 в 14:21
Что-то так не выходит ничего