freepascal 2.2 发布了, com/ole 兼容性有所提高 - zzsczz - ITeye技术网站

本文介绍如何使用FreePascal 2.2版本通过COM接口操作Microsoft Word应用程序。演示了如何创建Word对象实例,调用其方法以及获取属性值。提供了具体的代码示例,包括调用Word的Quit方法关闭应用及读取Visible属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如下所示,IDISPATCH赋值给variant后可以调用方法(quit)。

program cp4f;
{$APPTYPE CONSOLE}
uses
  SysUtils,
  variants,
  comobj,
  activex,
  windows  ;

var W:variant;
   m_s:boolean;
   m_s2:widestring;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  CoInitialize(nil);
    w := CreateOLEObject('Word.Application') ;
 Sleep(2000);
// m_s:=w.Visible;
// writeln('Visible:',m_s);
//m_s2:=w.Version;
//writeln('version:',m_s2);
 w.quit;
 w:=unassigned;
  CoUnInitialize;
end.

但是属性访问就没有试验成功。。似乎要用更原始的方式。。

program cp2;

{$APPTYPE CONSOLE}

uses
 SysUtils,
 variants,comobj,activex,ole2,windows;

 var W:IDispatch;

V:String;

theid:Integer;
mv,ppn:widestring;
mres:HRESULT;
ho,VRESULT:VARIANT;

rest :boolean;


myinp:TDispParams=();

begin

CoInitialize(nil);


W:=CreateOleObject('Word.Application');

ppn:='Visible';

mres:=W.getidsofnames(
guid_null,
@ppn,
1,
locale_system_default,
@theid

);

olecheck(mres);

writeln(theid);


mres:= W.Invoke(
theid,
GUID_NULL,

locale_system_default,

DISPATCH_PROPERTYGET,


myinp,

@VRESULT,
nil,
nil


);

olecheck(mres);

rest:=VRESULT;

writeln(rest);

ho:=W;

W:=nil;

ho.quit;

ho:=unassigned;


CoUnInitialize;

end.


 
发表评论

您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)

V:String;

theid:Integer;
mv,ppn:widestring;
mres:HRESULT;
ho,VRESULT:VARIANT;

rest :boolean;


myinp:TDispParams=();

begin

CoInitialize(nil);


W:=CreateOleObject('Word.Application');

ppn:='Visible';

mres:=W.getidsofnames(
guid_null,
@ppn,
1,
locale_system_default,
@theid

);

olecheck(mres);

writeln(theid);


mres:= W.Invoke(
theid,
GUID_NULL,

locale_system_default,

DISPATCH_PROPERTYGET,


myinp,

@VRESULT,
nil,
nil


);

olecheck(mres);

rest:=VRESULT;

writeln(rest);

ho:=W;

W:=nil;

ho.quit;

ho:=unassigned;


CoUnInitialize;

end.


 
发表评论

您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)

uses
 SysUtils,
 variants,comobj,activex,ole2,windows;

 var W:IDispatch;

V:String;

theid:Integer;
mv,ppn:widestring;
mres:HRESULT;
ho,VRESULT:VARIANT;

rest :boolean;


myinp:TDispParams=();

begin

CoInitialize(nil);


W:=CreateOleObject('Word.Application');

ppn:='Visible';

mres:=W.getidsofnames(
guid_null,
@ppn,
1,
locale_system_default,
@theid

);

olecheck(mres);

writeln(theid);


mres:= W.Invoke(
theid,
GUID_NULL,

locale_system_default,

DISPATCH_PROPERTYGET,


myinp,

@VRESULT,
nil,
nil


);

olecheck(mres);

rest:=VRESULT;

writeln(rest);

ho:=W;

W:=nil;

ho.quit;

ho:=unassigned;


CoUnInitialize;

end.


 
发表评论

您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)

V:String;

theid:Integer;
mv,ppn:widestring;
mres:HRESULT;
ho,VRESULT:VARIANT;

rest :boolean;


myinp:TDispParams=();

begin

CoInitialize(nil);


W:=CreateOleObject('Word.Application');

ppn:='Visible';

mres:=W.getidsofnames(
guid_null,
@ppn,
1,
locale_system_default,
@theid

);

olecheck(mres);

writeln(theid);


mres:= W.Invoke(
theid,
GUID_NULL,

locale_system_default,

DISPATCH_PROPERTYGET,


myinp,

@VRESULT,
nil,
nil


);

olecheck(mres);

rest:=VRESULT;

writeln(rest);

ho:=W;

W:=nil;

ho.quit;

ho:=unassigned;


CoUnInitialize;

end.


 
发表评论

您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)




引文来源   freepascal 2.2 发布了, com/ole 兼容性有所提高 - zzsczz - ITeye技术网站
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值