2015-03-22 3 views
0

Вот мой код:Как заблокировать ключ в TChromium?

procedure PreKeyEvent(Sender: TObject; const browser: ICefBrowser; 
    const event: PCefKeyEvent; osEvent: PMsg; 
    out isKeyboardShortcut, Result: Boolean); 
begin 
    if (event.windows_key_code = VK_CONTROL) or 
    (event.windows_key_code = VK_RMENU) or (event.windows_key_code = VK_LMENU) then 
    begin 
    event.windows_key_code := 0; 
    end; 
end; 

IF блок работает нормально. Но эта строка [event.windows_key_code := 0;] не будет игнорировать указанные ключи. Как отключить некоторые клавиши с помощью события PreKeyEvent?

Edit: Я также попытался установить Result параметр в true. все еще не работает.

+1

код [ 'OnPreKeyEvent'] (http://magpcss.org/ceforum/apidocs3/projects/ (по умолчанию)/CefKeyboardHandler .html # OnPreKeyEvent) не имеет описания, но я думаю, что он работает так же, как любой другой обработчик в рамках; чтобы указать, что вы обработали событие, которое вы вернете в результате, false в противном случае. – TLama

+0

Пробовал это уже. не работает. – Kermia

+0

Ну, вы должны сказать это в своем вопросе. Если остальная часть структуры работает именно так, я не понимаю, почему вы выбрали способ присвоения 0 ключевому коду. Лично, поскольку сначала я бы попытался вернуть значение true, если это не сработает, я бы поискал трекер. – TLama

ответ

0

ОК, поскольку я понял, что невозможно отключить Ctrl или ключ Alt отдельно. Вместо этого есть native_key_code, который представляет целочисленное значение для любого нажатия клавиши на клавиатуре (ярлыки имеют разные коды). Вы можете просто напечатать native_key_code значения для себя и посмотреть связанные с ними коды.

Так что в моем случае мне просто нужно отключить Ctrl+A и Ctrl+C ярлыки:

procedure PreKeyEvent(Sender: TObject; const browser: ICefBrowser; 
    const event: PCefKeyEvent; osEvent: PMsg; 
    out isKeyboardShortcut, Result: Boolean); 
const 
    CtrlA = 1966081; 
    CtrlC = 3014657; 
begin 
    if (event.native_key_code = CtrlA) or (event.native_key_code = CtrlC) then 
    begin 
    Result := true; 
    end; 
end; 
Смежные вопросы