關閉Copy,paster,cut 選單 |
|
wenjung
一般會員 發表:21 回覆:61 積分:21 註冊:2002-04-29 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 我試著在 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 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
wenjung
一般會員 發表:21 回覆:61 積分:21 註冊:2002-04-29 發送簡訊給我 |
我的程式如下:
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 發送簡訊給我 |
引言: 我的程式如下: 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 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 我試著在 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 發送簡訊給我 |
老大你的貼的碼有點亂,小弟重貼一次
問題:怎樣遮罩掉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 發送簡訊給我 |
|
wenjung
一般會員 發表:21 回覆:61 積分:21 註冊:2002-04-29 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
wenjung
一般會員 發表:21 回覆:61 積分:21 註冊:2002-04-29 發送簡訊給我 |
|
wenjung
一般會員 發表:21 回覆:61 積分:21 註冊:2002-04-29 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
再試試我找到的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討論區站長~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |