熟悉WebBrowser的高手请进 ( 积分: 20 )

  • 主题发起人 主题发起人 Avalon
  • 开始时间 开始时间
A

Avalon

Unregistered / Unconfirmed
GUEST, unregistred user!
wb_Main.ExecWB(OLECMDID_OPEN,OLECMDEXECOPT_SHOWHELP);
执行这行代码程序 没有任何反应
有资料说这个代码在IE5无不起作用 但我的系统是IE6啊
令求OLECMDID_SPELL的 用法
 
wb_Main.ExecWB(OLECMDID_OPEN,OLECMDEXECOPT_SHOWHELP);
执行这行代码程序 没有任何反应
有资料说这个代码在IE5无不起作用 但我的系统是IE6啊
令求OLECMDID_SPELL的 用法
 
参考一下:
如何使用webbrowser的execwb方法,奉献200分,急!急! (200分)
分类:控件 - 使用 宋海涛 (2000-04-20 22:04:00)
本人的程序中使用了webbrowser控件,并其调用execwb方法来实现打印、
拷贝、粘贴等功能,例如:
webbrowser1.ExecWB(OLECMDID_CUT, OLECMDEXECOPT_DODEFAULT);
可是程序总是引发异常并提示‘试图撤消一个未注册的拖放目标’,换成
其它参数也一样,这是怎么回事,请哪位高手赐教。


howardqu (2000-04-20 23:18:00)
用_Copy试一下,_cut要删除原内容在web中可能不行。

monster (2000-04-21 15:14:00)
是呀。

hhzh426 (2000-07-13 13:49:00)
关注!

kucio (2000-07-13 14:20:00)
webbrowser的bug很多(本论坛有很多贴子),最好不要用,换一个吧。

Tab (2000-07-13 17:55:00)
>>宋海涛
这是我以前做的,用的很好的,没有出错,你试试吧。
procedure Tmainfrm.saveicoClick(Sender: TObject);
var //保存当前页面到...;
pvaIn,pvaOut: OLeVariant;
begin
timer1.Enabled :=false;
try
pvaIn := NULL;
pvaOut := NULL;
WebBrowser1.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_PROMPTUSER,pvaIn,pvaOut);
except
on EOleException do DoNothing;//ShowMessage('请安装IE 5.0!');
end;
end;

procedure TMainFrm.mPrintSetupClick(Sender: TObject);
var //打印页面设置;
pvaIn,pvaOut: OLeVariant;
begin
timer1.Enabled :=false;
try
pvaIn := NULL;
pvaOut := NULL;
WebBrowser1.ExecWB(OLECMDID_PAGESETUP,OLECMDEXECOPT_PROMPTUSER,pvaIn,pvaOut);
except
on EOleException do DoNothing;//ShowMessage('请安装打印机!');
end;
end;


CathyEagle (2000-07-18 12:30:00)
在“End.”之前加入下面两句
initialization
OleInitialize(nil);

finalization
OleUninitialize;

woodstock (2000-07-28 10:12:00)
来自:hubdog 时间:00-4-9 12:08:19 ID:216196
var
Form1: TForm1;
FOleInPlaceActiveObject: IOleInPlaceActiveObject;
SaveMessageHandler: TMessageEvent;

...

implementation

...

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

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;

procedure TForm1.MyMessageHandler(var Msg: TMsg; var Handled: Boolean);
var
iOIPAO: IOleInPlaceActiveObject;
Dispatch: IDispatch;
begin
{ exit if we don't get back a webbrowser object }
if WebBrowser = nil then
begin
Handled := False;
Exit;
end;

Handled:=(IsDialogMessage(WebBrowser.Handle, Msg) = True);

if (Handled) and (not WebBrowser.Busy) then
begin
if FOleInPlaceActiveObject = nil then
begin
Dispatch := WebBrowser.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;

--------------------------------------------------------------------------------
来自:hubdog 时间:00-4-9 12:09:45 ID:216197
You have to add the following line to the bottom of your unit:

initialization
OleInitialize(nil);

finalization
OleUninitialize;



wjiachun (2000-10-14 13:01:00)
多人接受答案了。

watter (2001-06-06 12:00:00)
怎样保存到程序指定的路径,不弹出保存对话框呀,我试着把OLECMDID_saveas改成OLECMDID_save
执行时没有报错,可实际上根本就没有保存。

CathyEagle (2001-06-10 18:59:00)
OLECMDID_save是在你修改了当前浏览的网页后保存用的。


Tab-100,woodstock-100,的回答最终被接受。
 
这个问题很难吗???为什么我放在这儿和csdn都没人回答!!!还是问题太简单不屑回答!请知道得帮帮忙~谢谢!!! (100分)
分类:控件 - 使用 麓山脚下一颗葱 (2003-06-08 12:57:00)
在用webbrowser控件做复制的时候。。
输入这段代码:
代码:
if (WebBrowser1.QueryStatusWB(OLECMDID_COPY)=(OLECMDF_ENABLED or OLECMDF_SUPPORTED)) then WebBrowser1.ExecWB(OLECMDID_COPY,0);
程序能够编译成功!不过执行复制的时候遇到提示:“试图吊销一个未注册的拖放目标”
查找得知在整个程序代码的最后(end.之前)要添加以下代码~
代码:
initialization
  OleInitialize(nil);
finalization
   try
    OleUninitialize;
   except
   end;
可是遇到
OleInitialize、OleUninitialize未声明的错误!请问怎样解决!
而且为什么初始化和终止化都要写在最后!???

同样差不多的代码!在做全选时输入:
代码:
if (WebBrowser1.QueryStatusWB(OLECMDID_SELECTALL)=(OLECMDF_ENABLED or OLECMDF_SUPPORTED)) then WebBrowser1.ExecWB(OLECMDID_SELECTALL,0);
并且未输入那些初始化、终止化代码却能正常运行!请问那些代码是不是一定必要的!谢谢~!

jzx (2003-06-09 19:23:00)
>OleInitialize、OleUninitialize未声明的错误??
是不是你没包含什么单元?搜一下vcl目录,找到声明的地方就加上

ZRWeng (2003-06-09 19:24:00)
uses Activex;

麓山脚下一颗葱 (2003-06-09 19:36:00)
谢谢!不过似乎结果还是一样!---ZRWeng
说句实话~我都不知到要加的那些语句是不是一定必要的!你说的方法能具体点吗!最好时作个简单的程序直接把代码给我!程序里只要一个复制按钮一个webbrowser控件即可!谢谢!---jzx


jpyc (2003-06-10 7:38:00)
好象不是楼上所讲的情况,因为编译通过了。

chnplzh (2003-06-10 7:46:00)
应该是WebBrowser1.ExecWB(OLECMDID_COPY,0);在作怪,
可惜我没用过webbrowser控件,查了一下Delphi帮助,其语法是:
Delphi syntax:

procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); overload;
procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant); overload;
procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant; var pvaOut: OleVariant); overload;

麓山脚下一颗葱 (2003-06-10 17:46:00)
问题以自行解决!谢谢!
方法:把要加的那段代码改成
代码:
initialization
  OleInitialize(nil);
finalization
  OleUninitialize;
即可!(原来查找的资料上可能有错误)
我按照原来的代码确实不可以编译成功!要不然我也不会来问!--jpyc
帮助上的东东我也看过了!不过不是那儿的错误!!谢谢!!--chnplzh

 
很遗憾的告诉你不可以实现。但是你可以自己用TOpenDialog或者其它办法实现。
SPELL在IE中也没有。
 
多人接受答案了。
 
后退
顶部