![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RegisterHotKey [D6, Win95/98, Win2k]
AMQ © (2002-04-26 10:31:00)Функция RegisterHotKey регистрирует комбинацию клавиш.
Чтобы зарегистрировать в программе надо в качестве первого параметра указать
RegisterHotKey(form1.handle,...), а что надо указать, чтоб зарегестрировать эту комбинацию в Windows, в смысле если фокус не у моей формы?
Севостьянов Игорь (2002-04-30 12:46:00) [1]Вот тебе пример:
const
ID_HOT_KEY = 9;
type
TfrmMain = class(TForm)
protected
procedure SetHotKey(var Msg: TMessage); message WM_HOTKEY;
end;
var
frmMain : TfrmMain;
ID : Integer;
--------------------------
procedure TfrmMain.FormCreate(Sender: TObject);
begin
ID := GlobalAddAtom("APP_HOTKEY");
RegisterHotKey(Handle, ID, MOD_CONTROL + MOD_WIN, ID_HOT_KEY);
end;
--------------------------
procedure TfrmMain.SetHotKey(var msg: TMessage);
begin
if (msg.LParamLo = MOD_CONTROL + MOD_WIN) and (msg.LParamHi = ID_HOT_KEY) then ShowApp;
end;
--------------------------
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, ID);
GlobalDeleteAtom(ID);
end;
--------------------------
procedure TfrmMain.ShowApp;
begin
if not IsIconic(Application.Handle) then Application.Minimize
else
begin
Application.Restore;
Application.BringToFront;
end;
end;
--------------------------
Да не забудь проверки проставить ...
Vovchik (2002-04-30 10:32:00) [2]В RegisterHotKey нужно указывать хэндл окна, в которое будет отправлено сообщение о том, что зарегистрированная комбинация клавиш нажата. А регистрируеются они почти для всей системы, а именно будут работать только для конкретного рабочего стола - того, на котором была запущена программа, вызывающая RegisterHotKey.
Song (2002-04-30 08:59:00) [3]В FAQ есть пример использования RegisterHotKey() При чём тут DC...?
Anar (2002-04-30 08:51:00) [4]RegisterHotKey() регистрирует там, куда указывает контекст воспроизведеения (DС). У неё по-моему такие параметры:
RegisterHotKey(hWND:HWND,...),указать надо form1.handle для твоей формы (где form1 - имя твоей формы). Просто я не знаю для всего Windows"a, но пo-моему для рабочего стола это DC это 0. Я так делал для рисования на desktope, но не могу тоже самое делать для RegisterHotKey().
Song (2002-04-26 11:00:00) [5]RegisterHotKey() регистрирует комбинацию во всей системе. И обрабатывается даже если на окне нет фокуса ввода.