線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3814
推到 Plurk!
推到 Facebook!

關閉Copy,paster,cut 選單

 
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-05-27 12:06:41 IP:210.71.xxx.xxx 未訂閱
我試著在 TwebBrowser 用API攔截wm_rbuttondown Tmessage 但還是無效,不知有什麼方法可以關閉Copy,paster,cut... 選單???
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-05-27 12:11:08 IP:61.219.xxx.xxx 未訂閱
引言: 我試著在 TwebBrowser 用API攔截wm_rbuttondown Tmessage 但還是無效,不知有什麼方法可以關閉Copy,paster,cut... 選單???
我也在找此功能, 但是若您將: initialization OleInitialize(nil); finalization OleUninitialize; end. 移除這兩行的話,twebbrowser雖然會出現 copy/paster/cut... 但並不會真的作用,您可試試看! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-05-27 13:21:44 IP:210.71.xxx.xxx 未訂閱
我是用TwebBrowser 元件,所以我找不到以下兩行 initialization OleInitialize(nil); finalization OleUninitialize; 這兩行在哪裡???
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-05-27 13:25:19 IP:61.219.xxx.xxx 未訂閱
引言: 我是用TwebBrowser 元件,所以我找不到以下兩行 initialization OleInitialize(nil); finalization OleUninitialize; 這兩行在哪裡???
是寫在主程式中的,若您未加入這兩行,copy/paste/cut的動作不會成功, 您可試看看! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-05-27 13:28:37 IP:61.221.xxx.xxx 未訂閱
我的程式如下: procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.Navigate('c:\2.xls'); WebBrowser1.Application; end; procedure TForm1.winproc(var msg: TMessage); begin showmessage('aa'); end; initialization OleInitialize(nil); finalization OleUninitialize; end. 但是compiler時產生OleInitialize及OleUninitialize未定義
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-05-27 13:35:16 IP:61.219.xxx.xxx 未訂閱
引言: 我的程式如下: procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.Navigate('c:\2.xls'); WebBrowser1.Application; end; procedure TForm1.winproc(var msg: TMessage); begin showmessage('aa'); end; initialization OleInitialize(nil); finalization OleUninitialize; end. 但是compiler時產生OleInitialize及OleUninitialize未定義
要加uses activex;才可使用這兩行, 報歉之前寫錯,是"不加這兩行指令時,copy/paste/cut的動作不會生效,雖然會出現,但不會真的寫入剪貼簿!" ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-05-27 15:58:36 IP:61.221.xxx.xxx 未訂閱
真不好意思,再次打擾,我用以下設定還是可以copy,paster ... WebBrowser1.Navigate('c:\2.xls') 不知道Navigate是否要加其他的設定值????
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-05-27 17:23:13 IP:61.219.xxx.xxx 未訂閱
引言: 真不好意思,再次打擾,我用以下設定還是可以copy,paster ... WebBrowser1.Navigate('c:\2.xls') 不知道Navigate是否要加其他的設定值????
沒關係,待我找到那篇文章再告訴您! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-05-28 23:14:31 IP:192.168.xxx.xxx 未訂閱
引言: 我試著在 TwebBrowser 用API攔截wm_rbuttondown Tmessage 但還是無效,不知有什麼方法可以關閉Copy,paster,cut... 選單???
找到那篇文章,我原文貼上:您先看看! ??:怎?屏蔽掉webbrowser的鼠?右?(150分) ( ?分:150, 回复:17, ??:315 ) 分?:Internet/TCPIP ( 版主:luyear, robertcool ) ?自:wolfsong, ??:2001-11-16 12:35:00, ID:733055 [?示:小字体 | 大字体] ??hook的好例子,拜托。 ?自:xianjun, ??:2001-11-17 8:40:00, ID:734990 完美解?方案(你想屏蔽什么?都可以): 下面的代?只?初始化?的WebBrowser的菜?生效,即WebBrowser已?Navigate?某一? 如果?未Navigate的WebBrowser,可以直接?出其PopupMenu?性里?的菜?。 const WM_POPUP_DXMENU = WM_USER 1000; private { Private declarations } OldWBWndProc: TWndMethod; procedure WBWndProc(var Message: TMessage); procedure WmPopupMymenu(var Msg: TMsg); message WM_POPUP_DXMENU; procedure TForm1.WBWndProc(var Message: TMessage); begin with Message do begin if ((Msg = WM_PARENTNOTIFY) and (LOWORD(WPARAM) = WM_RBUTTONDOWN)) or (WPARAM = VK_APPS) then PostMessage(Handle, WM_POPUP_DXMENU, LOWORD(LPARAM), HiWord(LPARAM));//通知主窗体要?出菜? if (GetAsyncKeyState(VK_CONTROL) and (1 shl 16)) <> 0 then //按Ctrl A全? Ctrl C(X)拷?到剪?板 case WPARAM of Ord('A'): WebBrowser.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT); Ord('C'), Ord('X'): WebBrowser.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT); end; //if WPARAM = VK_ESCAPE then 你?可以象???其他的? if (Msg < (CN_BASE WM_KEYFIRST)) or (Msg > (CN_BASE WM_DEADCHAR)) then OldWBWndProc(Message); end; end; procedure TForm1.Loaded; begin inherited; if not (csDesigning in ComponentState) then begin OldWBWndProc := WebBrowser.WindowProc; WebBrowser.WindowProc := WBWndProc; end; end; procedure TCQContractView.WmPopupMymenu(var Msg: TMsg); begin PopupDxBarMenu; //?出自己的菜? end; 我已在?有?目中使用此方法,如有什么???提出。 ?自:jollier, ??:2001-11-17 9:17:00, ID:735031 小弟?了一?Internet Explorer?置的?件,几乎包含了IE的所有?置,特?是?Internet ??的?置。 我????件的目的有??:1.我的一?很好的老?因?上了“不?范”的网站,?IE搞的 ?法正常使用;2.我在网吧兼?,老板?有些?西不?用,呵呵,用她???置一下就搞定。 各位大哥,需要?件的?我?信jollier@371.net ?信必复?件。 ?自:> > ( Caption = 'Form1'Name = '宋体' Caption = 'asdfasdf' Caption = 'qwerqwer' Caption = '12341234' Caption = 'qerqwer'
------
~~~Delphi K.Top討論區站長~~~
阿子
站務副站長


發表:120
回覆:230
積分:201
註冊:2002-03-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-05-28 23:21:27 IP:61.221.xxx.xxx 未訂閱
老大你的貼的碼有點亂,小弟重貼一次
問題:怎樣遮罩掉webbrowser的滑鼠右鍵(150分) ( 積分:150, 回復:17, 閱讀:316 )
分類:Internet/TCPIP ( 版主:luyear, robertcool ) 
來自:wolfsong, 時間:2001-11-16 12:35:00, ID:733055
[顯示:小字體 | 大字體]     給個hook的好例子,拜託。
//======================================================================
來自:wolfsong, 時間:2001-11-16 16:04:00, ID:733826    再加一句:還得把windows熱鍵遮罩掉:apps鍵    來自:yaoluo, 時間:2001-11-16 16:49:00, ID:733992    做觸摸屏吧
有辦法的,我找找
//======================================================================
來自:minikiller, 時間:2001-11-16 17:03:00, ID:734058    go to www.euromind.com/iedelphi 看看 ,裏面很多關於IE設置的辦法!
//======================================================================
來自:wolfsong, 時間:2001-11-16 17:16:00, ID:734104    以前沒用hook,吃掉過webbrowser右鍵,可吃不掉winapps鍵
給個吃掉apps的法子吧(不用放到hook裏),給解決代碼的話,另給50分
本題目保證150,保證不食言
//======================================================================
來自:xianjun, 時間:2001-11-17 8:40:00, ID:734990    完美解決方案(你想遮罩什麼鍵都可以):
下面的代碼只對初始化過的WebBrowser的功能表生效,即WebBrowser已經Navigate過某一頁
如果對未Navigate的WebBrowser,可以直接彈出其PopupMenu屬性裏設的功能表。    const
  WM_POPUP_DXMENU = WM_USER   1000;      private
    { Private declarations }
    OldWBWndProc: TWndMethod;
    procedure WBWndProc(var Message: TMessage);
    procedure WmPopupMymenu(var Msg: TMsg); message WM_POPUP_DXMENU;    procedure TForm1.WBWndProc(var Message: TMessage);
begin
  with Message do
  begin
    if ((Msg = WM_PARENTNOTIFY) and (LOWORD(WPARAM) = WM_RBUTTONDOWN)) or
      (WPARAM = VK_APPS) then
      PostMessage(Handle, WM_POPUP_DXMENU, LOWORD(LPARAM), HiWord(LPARAM));//通知主表單要彈出功能表
    if (GetAsyncKeyState(VK_CONTROL) and (1 shl 16)) <> 0 then //按Ctrl A全選 Ctrl C(X)拷貝到剪貼板
      case WPARAM of
        Ord('A'):
          WebBrowser.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
        Ord('C'), Ord('X'):
          WebBrowser.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);
      end;
    //if WPARAM = VK_ESCAPE then 你還可以象這樣攔其他的鍵
    if (Msg < (CN_BASE   WM_KEYFIRST)) or (Msg > (CN_BASE   WM_DEADCHAR)) then
      OldWBWndProc(Message);
  end;
end;    procedure TForm1.Loaded;
begin
  inherited;
  if not (csDesigning in ComponentState) then
  begin
    OldWBWndProc := WebBrowser.WindowProc;
    WebBrowser.WindowProc := WBWndProc;
  end;
end;    procedure TCQContractView.WmPopupMymenu(var Msg: TMsg);
begin
  PopupDxBarMenu; //彈出自己的功能表
end;    我已在現有專案中使用此方法,如有什麼問題請提出。
//======================================================================
來自:jollier, 時間:2001-11-17 9:17:00, ID:735031    小弟寫了一個Internet Explorer設置的軟體,幾乎包含了IE的所有設置,特別是對Internet
選項的設置。
我寫這個軟體的目的有兩個:1.我的一個很好的老師因為上了“不規範”的網站,將IE搞的
無法正常使用;2.我在網吧兼職,老闆說有些東西不讓用,呵呵,用她輕輕設置一下就搞定。
各位大哥,需要軟體的給我寫信jollier@371.net
來信必複軟體。
//======================================================================
來自:>  > (
  Caption = 'Form1'Name = '宋體'
      Caption = 'asdfasdf'
      Caption = 'qwerqwer'
      Caption = '12341234'
      Caption = 'qerqwer'>    從思考取勝一切~q
        
------
從思考取勝一切~q
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-05-29 06:53:06 IP:192.168.xxx.xxx 未訂閱
引言: 老大你的貼的碼有點亂,小弟重貼一次
阿子 謝啦! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-05-29 12:45:21 IP:61.221.xxx.xxx 未訂閱
各位謝啦 !! 
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-05-29 14:41:11 IP:192.168.xxx.xxx 未訂閱
引言: 各位謝啦 !! < face="Verdana, Arial, Helvetica"> Dear wenjung,若您試出來了,別忘了將您的程式範例貼上來, 我也要用喔! 謝謝您! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-05-30 09:27:09 IP:210.71.xxx.xxx 未訂閱
報告天使大大: 目前正在測試中 ....
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-05-30 09:56:28 IP:210.71.xxx.xxx 未訂閱
各位大大:     經測試只可針對 homepage,若是瀏覽.doc,.xls ...    將會失效
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-06-01 23:04:54 IP:192.168.xxx.xxx 未訂閱
再試試我找到的Hook範例但只能欄截Keyboard(mouse就要自己改寫) 您先試試!
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}
var
  hNextHookProc: HHook;
  procSaveExit: Pointer;        function KeyboardHookHandler(iCode: Integer;
  wParam: WPARAM;
  lParam: LPARAM): LRESULT; stdcall; export;
const
  _KeyPressMask = $80000000;
begin
  Result := 0;
  If iCode < 0 Then
  begin
    showmessage(inttostr(icode)   inttostr(lParam));
    Result := CallNextHookEx(hNextHookProc, iCode, wParam, lParam);
    Exit;
  end;
  // °»´ú Ctrl   B ²Õ¦XÁä
  if ((lParam and _KeyPressMask) = 0) and
    (GetKeyState(vk_Control) < 0) and (wParam = Ord(B)) then
  begin
    Result := 1;
    WinExec(Notepad.exe, sw_Normal);  // °O¨Æ¥»
  end;
end;    function EnableHotKeyHook: BOOL; export;
begin
  Result := False;
  if hNextHookProc <> 0 then Exit;
  // ±¾¤W WH_KEYBOARD ³o«¬ªº HOOK, ¦P®É, ¶Ç¦^­È¥²¶·«O¯d¤U
  // ¨Ó, §K±o HOOK ©I¥sìµ²Â_±¼
  hNextHookProc := SetWindowsHookEx(WH_KEYBOARD,
    KeyboardHookHandler,
    HInstance,
    0);
  Result := hNextHookProc <> 0;
end;    function DisableHotKeyHook: BOOL; export;
begin
  if hNextHookProc <> 0 then
  begin
    UnhookWindowshookEx(hNextHookProc);  // ¸Ñ°£ Keyboard Hook
    hNextHookProc := 0;
    MessageBeep(0);
    MessageBeep(0);
  end;
  Result := hNextHookProc = 0;
end;    procedure HotKeyHookExit;
begin
  // ¦pªG§Ñ¤F¸Ñ°£ HOOK, ¦Û°Ê¥N²z¸Ñ°£ªº°Ê§@
  if hNextHookProc <> 0 then DisableHotKeyHook;
  ExitProc := procSaveExit;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  EnableHotKeyHook
end;    procedure TForm1.Button2Click(Sender: TObject);
begin
  DisableHotKeyHook;
end;    end.
~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
系統時間:2024-11-21 23:50:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!