Q&A

  • TWebBrowser에서 Ctrl+N을 막는 방법?
공력이 딸려서 힘들군요. -,.-

TWebBrowser로 개발을 하는데, Ctrl+N을 막는 방법이 없군요.
임베디드를 사용했지만, 결과는 마찬가지입니다.

Windows API를 이용한 방법이나,
참심한 아이디를 가지신 고수께서
도움울 주셨으면 합니다.

(--)(__)꾸벅

1  COMMENTS
  • Profile
    김요한 2002.09.11 01:46
    EmbededWB Component를 사용해서

    ...
    function TForm1.EmbeddedWB1TranslateAccelerator(const lpMsg: PMsg;
      const pguidCmdGroup: PGUID; const nCmdID: Cardinal): HRESULT;
    begin
      Result := S_OK;
    end;
    ...

    이렇게 하면 모든 키의 사용을 막을 수 있습니다.
    online에서는 잘 되더군요.
    그러나, offline 문서를 열어서 Ctrl+N를 누르면 활성화되더군요.
    저만 그런지 모르지만, 어제 저녁에 완료하고 담당자에게 시연할 때
    황당함이란... ㅜ.ㅠ

    여러가지 방법을 동원했지만,
    특히한 현상을 발견했지요.
    EmbededWB Component를 클릭하면 잘 된다는 사실을...

    아래는 제가 동원한 방법입니다.
    1. 강제 Mouse Click 제대로 작동이...
    2. Form의 keyprivew를 True로 하고 keydown에서 처리
    3. KeyHook

    어쩔 수 없이 3번을 택했습니다.

    ...
    var
      Form1: TForm1;
      KeyHook: HHOOK;
      function KeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LResult; stdcall;
    ...
    //모든키 방지
    function KeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LResult;
    begin
      if nCode > -1 then begin
           Result := 1
      end
      else Result := CallNextHookEx(KeyHook, nCode, wParam, lParam);
    end;
    ...
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      try
    ...
        KeyHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHook, 0, GetCurrentThreadID);
    ...
      except
    ...
      end;
    end;