Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизГорячие клавишы Найти похожие ветки
← →
TerminalHead (2005-08-04 09:44) [0]Мне нужно назначить горячие клавишы для моего приложения - консольная программа без формы, должна быть сервисом.
Пока что никак не могу понять куда это все написать чтобы оно работало, до этого в программах с формой применял этот код, но тут все по другому...
Помогите пожалуйста
//В обработчике события OnCreate
//основной формы создаём горячую клавишу:
if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then
ShowMessage("Unable to assign Alt-Shift-F9 as hotkey.");
//В событии OnClose удаляем горячую клавишу:
UnRegisterHotkey( Handle, 1 );
//Добавляем обработчик в форму для сообщения
//WM_HOTKEY:
private // в секции объявлений формы
procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
procedure TForm1.WMHotkey( var msg: TWMHotkey );
begin
if msg.hotkey = 1 then
begin
if IsIconic( Application.Handle ) then
Application.Restore;
BringToFront;
end;
end;
← →
Digitman © (2005-08-04 09:47) [1]
> без формы
??
А TForm1 это что ? Не форма ли как раз ?
> консольная программа .. должна быть сервисом
это как ?
← →
Digitman © (2005-08-04 09:52) [2]если программа не создает никаких окон, то регистрация гор.клавиши должна осуществляться по иному :
if not RegisterHotkey(0, ..) then ..
в этом случае сообщение WM_HOTKEY будет посылаться системой в очередь сообщений того трэда, который вызывал ф-цию RegisterHotkey() ... и трэд этот, соответственно, должен организовать цикл ожидания/выборки/диспетчеризации адресованых ему сообщений, в т.ч. и WM_HOTKEY
← →
evvcom © (2005-08-04 09:53) [3]А нас в первом классе учили: "Жи-ши пиши с буквой "и"!"
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c