谁能搞定,再加50分 (50分)

  • 主题发起人 主题发起人 sunny3super
  • 开始时间 开始时间
S

sunny3super

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi 中 webbrowser1 浏览器中浏览网页,输入文本不能用ENTER键,无论你怎么按ENTER键,它都不会换行,还有,右键菜单的复制,和粘贴根本不是那么一回事,为什么呢?为什么??(很急呀)
我使新手,没有多少分,还留一点问别的问题呀。帮帮我吧。
 
步骤如下
1,在使用TwebBrowser控件的窗体(例如MainForm)中创建一个函数
procedure TfrmMain.MsgHandler(var Msg: TMsg; var Handled: Boolean);
var
iOIPAO: IOleInPlaceActiveObject;
Dispatch: IDispatch;
begin

{ exit if we don't get back a webbrowser object }
if (wb = nil) then
begin
Handled := False;
Exit;
end;

Handled := (IsDialogMessage(wb.Handle, Msg) = True);
if (Handled) and (not wb.Busy) then
begin
if FOleInPlaceActiveObject = nil then
begin
Dispatch := wb.Application;
if Dispatch <> nil then
begin
Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
if iOIPAO <> nil then
FOleInPlaceActiveObject := iOIPAO;
end;
end;

if FOleInPlaceActiveObject <> nil then
if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
((Msg.wParam = VK_BACK) or (Msg.wParam = VK_LEFT) or (Msg.wParam =
VK_RIGHT)) then
//nothing - do not pass on Backspace, Left or Right arrows
else
FOleInPlaceActiveObject.TranslateAccelerator(Msg);
end;
end;

2,在该窗体的FormCreate事件中,
oldHandler := Application.OnMessage;//oldHandler 全局变量
Application.OnMessage := MsgHandler;

3,在该Form的private中声明
FOleInPlaceActiveObject: IOleInPlaceActiveObject;

OK啦,这是我现有程序中正在使用的,如果有问题再找我.

[8D]
 
不行了,FOleInPlaceActiveObject: IOleInPlaceActiveObject;编译时出错,说IOleInPlaceActiveObject这个类没有定义的。
另外oldHandler这个全局变量是什么类型的。
你是不是和我遇到的是同样的问题。

 
你打包给我一份吧,给我参考一下,真的很急。谢谢
email:sunny3super@163.com
 
1,FOleInPlaceActiveObject: IOleInPlaceActiveObject;编译时出错,说IOleInPlaceActiveObject这个类没有定义的。
在use中把activeX头文件包进去.
2, oldHandler: TMessageEvent
应该没问题了
 
确实,现在可以了,但是复制,粘贴不能用,如何解决,
放心,我一定把分加给你。
 
对不起 还漏掉了2个函数

procedure TForm1.FormDeactivate(Sender: TObject);
begin
Application.OnMessage := SaveMessageHandler;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.OnMessage := SaveMessageHandler;
FOleInPlaceActiveObject := nil;
end;
 
按ctrl+C 复制 再按ctrl+V粘贴.我这能用啊.
上面的saveMessagehandler应该是oldHandler
 
你可不可以把你的哪个程序打包给我一分,只要一个简单的浏览器就行了。
我完全照你说的方法做了,但是复制,粘贴,剪切确实不是那么一回事,但是撤消和全选都可以用,我想看看你的那个和我做的有什么不同之处。
我的邮箱是:sunny3super@163.com.
谢谢你,先给你50分。
 
对不起,我的程序不能给你,公司管理很严格。有关TWebBrowser 控件编程的相关函数我都给你了,另外,还有我的IE是6。0的。good luck
 
后退
顶部