Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Вниз

регистрация горячих сочетаний клавиш.   Найти похожие ветки 

 
bloodman   (2003-05-29 19:10) [0]

Здравствуйте мастера! У меня такая проблема:
Мне нужно программно зарегистрировать сочитание.Пишу такой код:
ShortMod : Cardinal ;
...

ShortMod:=0;
IF pos("Ctrl",ShortCutArray[FX])<>0 Then ShortMod:=ShortMod+mod_control;
IF pos("Alt",ShortCutArray[FX])<>0 Then ShortMod:=ShortMod+MOD_ALT;
IF pos("Shift",ShortCutArray[FX])<>0 Then ShortMod:=ShortMod+MOD_SHIFT;
IF pos("Win",ShortCutArray[FX])<>0 Then ShortMod:=ShortMod+MOD_WIN;
strinForShort:=ShortCutArray[FX];
lalala:=ord(strinForShort[length(strinForShort)]);
ShortCutID[FX]:=GlobalAddAtom(PChar(Random(9999999)));
IF not RegisterHotKey(Handle,ShortCutID[FX],ShortMod,ord(strinForShort[length(strinForShort)])) then
messageDlg("error",mterror,[mbok],0);

Ошибок не выдает, но и hotkey не регистрирует :( а если написать
так:
RegisterHotKey(Handle,ShortCutID[FX],ShortMod,82). То регистрирует. Но если написать так(что ,в принцепе одно и тоже):
RegisterHotKey(Handle,ShortCutID[FX],ShortMod,Ord("r"))
То снова не регистрирует :(( В чем проблема??? Сообщения ловлю так:
...
procedure hotykey(var msg:TMessage); message WM_HOTKEY;
...
procedure TBLMainForm.hotykey(var msg:TMessage);
begin
MessageDlg("La-La-la",mtError,[mbOK],0);
end;
Подскажите в чем проблема плиззз.


 
bloodman   (2003-05-29 19:32) [1]

Неужели такой сложный вопрос???


 
Skier   (2003-05-29 19:37) [2]

сдаётся мне что всё-таки так надо писать :
ShortMod := ShortMod or mod_control;
ShortMod := ShortMod or MOD_ALT;



 
bloodman   (2003-05-29 20:00) [3]

Может быть , работает и так и по-моему.Но проблема в другом.А именно : ord(strinForShort[length(strinForShort)]) Если ставить в качестве последнего параметра этот код , то ничего не работает :( Может как - то по другому нужно кодсимвола узнавать?


 
Skier   (2003-05-29 20:12) [4]

>bloodman © (29.05.03 20:00)

1)


> Может быть , работает и так и по-моему.

Дело в том что арифметическое сложение и побитовое сложение
это РАЗНЫЕ операции. Советую поправить

2)
Из справки по Win API

BOOL RegisterHotKey(

HWND hWnd, // window to receive hot-key notification
int id, // identifier of hot key
UINT fsModifiers, // key-modifier flags
UINT vk // virtual-key code
);


Parameters

hWnd

//...................

id

Specifies the identifier of the hot key. No other hot key in the calling thread should have the same identifier. An application must specify a value in the range 0x0000 through 0xBFFF. A shared dynamic-link library (DLL) must specify a value in the range 0xC000 through 0xFFFF (the range returned by the GlobalAddAtom function). To avoid conflicts with hot-key identifiers defined by other shared DLLs, a DLL should use the GlobalAddAtom function to obtain the hot-key identifier.


 
Skier   (2003-05-29 20:17) [5]

RegisterHotKey(Handle,ShortCutID[FX],ShortMod,Ord(" R"))


 
bloodman   (2003-05-30 01:16) [6]

> Skier ©
Все сделал как ты сказал.Все заработало! Большое спасибо!!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.014 c
14-26710
Лис
2003-05-21 18:40
2003.06.09
Парни, объясните чайнику как в Дельфи добраться до прерываний!


1-26584
baracuda
2003-05-28 15:06
2003.06.09
запись в файл


1-26607
AFrolov
2003-05-28 12:47
2003.06.09
Как получить ссылку на интерфейс


6-26633
sergey2
2003-02-23 20:10
2003.06.09
Как вытащить рисунок (png) из HTML страницы?


8-26618
Dunkan
2003-02-24 20:42
2003.06.09
Работа в DirectX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский