实用技术---如何在OLE中快速频繁地打开WROD文档,而不频繁地打开关闭word? (50分)

  • 主题发起人 主题发起人 wjp888
  • 开始时间 开始时间
W

wjp888

Unregistered / Unconfirmed
GUEST, unregistred user!
在第一次启动OLE时,直接用OLE.Doverb(0),OLE就会自动打开一个空Word。然后使用OLE.CreateObjectFromFile('c:/tmp.doc',True)后,当前WORD文件就会快速的建立在OLE里,但没有被击活,如何不用OLE.Doverb(integer)而使用其它方法击活,因为使用OLE.Doverb(integer)太慢了,而且前面我已经OLE.Doverb(0)了,另外我也把Delphi的原码OLE.CreateObjectFromFile()方法也改成不用释放了。所以现在每次打开WROD都非常的快,但就是没有被击活。那位大侠能不用OLE.Doverb(integer)而使用其它方法快速击活。
 
请讨论。
 
那位大侠能不用OLE.Doverb(integer),而使用其它方法快速击活OLE。
 
我还真想知道,有谁能回答,我给200分
 
请接着讨论....
 
好搞,如下所示:
TForm1 = class(TForm)

FWordApp: OleVariant;
..
end;

begin
try
FWordApp := GetActiveOleObject('Word.Application');
except
try
FWordApp := CreateOleObject('Word.Application');
Except
ShowMessage('启动 Microsoft Excel 失败'+#13+ '请检查Excel是否正确安装');
Exit;
end;
end;
.............
.............
(在关闭程序时调用检测FWordApp并关闭)
 
加入WordAppliaction控件;

if WordAppliaction1.visible=false then WordAppliaction1.visible:=true;
就可直接启动Word.
 
嘿嘿 我来出个歪招 不过我用过可行
把OleContainer的Autoactive的属性改成aagetFocus
然后做个模拟鼠标双击或单击事件
procedure TWeb_Office.Mouse_dub;
var
pt: TPoint;
begin
pt := OleContainer1.ClientToScreen(Point( 0,0 )) ;
SetCursorPos( pt.x, pt.y );
mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
end;

在OLE.CreateObjectFromFile()执行后在执行Mouse_dub方法,就可以激活了
 
后退
顶部