Delphi: Ориентирован ли веб-браузер / или реальный дескриптор веб-браузера? - PullRequest
0 голосов
/ 03 августа 2011

Я хочу отключить F5 на веб-браузере.Для этого я могу использовать Application.OnMessage.Но я хочу навязать это правило, когда ВБ сфокусирован.

Но провалились все виды:

1.) Получите HWND WB - для сравнения Msg.hwnd

2.) Получите сфокусированное состояние WB или посмотрите, когда оно сфокусировано

Спасибо за каждую идею этой проблемы!

dd

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Я предполагаю, что вашей реальной целью является отключение перезагрузки или обновления отображаемой в данный момент веб-страницы (обычно выдается нажатием клавиши F5).Далее, если вы говорите о встроенном Internet Explorer, я бы предложил использовать TEmbeddedWB из bsalsa .У него есть событие OnRefresh, которое позволяет отменить обновление, установив Cancel:= True.Так что нет необходимости ловить ключи вручную.

Если у вас нет выбора, чтобы выбрать TEmbeddedWB, и вы застряли с TWebBrowser, то, тем не менее, может быть вдохновляющим рассмотрение реализации OnRefresh.1011 *

0 голосов
/ 03 августа 2011

Как мне кажется, лучший способ - проверить ClassName hwnd, который я получил в Application.Onmessage.

Это похоже на «отключение контекстного меню» на основе имени класса «Internet_Explorer_Server».

См. Пример:

procedure TDDGoogleMapsObject.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
var
    szClassName: array[0..255] of Char;
const
    ie_name = 'Internet Explorer_Server';
begin
    if Msg.message = WM_KEYDOWN then
        if Msg.wParam = VK_F5 then begin
            GetClassName(Msg.HWND, szClassName, SizeOf(szClassName));
            if lstrcmp(@szClassName[0], @ie_name[1]) = 0
                then Handled := True;
            if not Handled
                then beep;
        end;
end;

Здесь можно проверить источник ключа VK_F5. Если это из окон IE, то мы отключаем его. Еще один случай, когда мы позволяем это подтолкнуть ...

Спасибо за вашу помощь: дд

...