关于OleContainer嵌入的问题,若嵌入WORD,请教如何屏蔽WORD的右键菜单和快捷键.(200分)

  • 主题发起人 主题发起人 zlbati9
  • 开始时间 开始时间
Z

zlbati9

Unregistered / Unconfirmed
GUEST, unregistred user!
关于OleContainer嵌入的问题,若嵌入WORD,请教如何屏蔽WORD的右键菜单和快捷键.
不想让右键菜单出现,好象无法使用VBA控制,因为WORD没提供屏蔽右键菜单的操作.

望各位高手指点!
 
有人知道吗?
 
还请大家帮我
 
屏蔽右键菜单:
{
demonstrate hook in a form.
}
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw, ComCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
FMHook: HHOOK;
function FMHookProc(Code: Integer; WParam: Longint; var Msg: TMsg): Longint; stdcall;

implementation

{$R *.DFM}

function FMHookProc(Code: Integer; WParam: Longint; var Msg: TMsg): Longint; stdcall;
begin
if Msg.Message = WM_RBUTTONDOWN then
with form1 do
begin
//你还可以先判断一下位置。
Msg.Message := 0;
end ;
Result := CallNextHookEx(FMHook, Code, WParam, Longint(@Msg)); //放出消息给下一个.
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FMHook := SetWindowsHookEx(WH_GETMESSAGE, @FMHookProc, 0, GetCurrentThreadID);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('www.vckbase.com');
end;

end.
---------------------------------
快捷键:试试拦截 WM_KEYDOWN
 
很简单!
OleContainer1.AutoActivate := aaManual;
OleContainer1.AutoVerbMenu := False;
 
To zw84611:
这个方法我以前试过了,不知道是什么原因。钩子没办法拦截到OLE嵌入的消息。不信你用
TOleContainer试一下。谢谢参与!结帖时有分。
 
TO tulipfan:
这个不简单啊!你说的无法达到原位激活的效果,肯定是不行的。
谢谢参与!结帖时有分。
 
OleContainer1.AutoActivate := aaManual;
OleContainer1.AutoVerbMenu := False;
激活:
OleContainer1.doVerb( ovShow );
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
489
import
I
后退
顶部