一个简单的问题。不过我不会。怎样用WINEXEC函数。怎样调用期它应用程序比如WORD?

prgliker 2003-10-17 10:55:34
一个简单的问题。不过我不会。怎样用WINEXEC函数。怎样调用期它应用程序比如WORD?
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huojiehai 2003-10-17
  • 打赏
  • 举报
回复
WinExec('d:\aa.exe', 1) ;
Ivin 2003-10-17
  • 打赏
  • 举报
回复
使用WordDocument,WordApplication

读取和显示Word文档的VCL控件:

http://www.ksdev.com/vcl/index.html

http://vcl.vclxx.org/DELPHI/D32FREE/DATA2WRD.ZIP

最近接触了一个用户的案例,用delphi控制word做一个合同管理程序。办公人员先根据业务需要,写好合同的文字,但在用户名称、产品名称等变化的位置填写指定的标记字符串,然后通过delphi把数据库中的实际数据替换掉word中的文字,最后让word打印出合同。

delphi自带了一个简单的word例题,但功能太简单。通过查找vba的说明,再对照delphi的vcl,编写了如下代码,实现了基本的公文管理功能。

启动word时用如下代码:

begin

try

wordapplication.connect;

except

messagedlg('word may not be installed', mterror, [mbok], 0);

abort;

end;

wordapplication.visible := true;

wordapplication.caption := 'delphi automation';

end;

关闭word用如下代码。如果想保存doc文件,请修改savechanges变量的内容:

var

savechanges, originalformat, routedocument: olevariant;

begin

savechanges := wddonotsavechanges;

originalformat := unassigned;

routedocument := unassigned;

try

wordapplication.quit(savechanges, originalformat, routedocument);

wordapplication.disconnect;

except

on e: exception do

begin

showmessage(e.message);

wordapplication.disconnect;

end;

end;

end;

让word打开一个指定的文件,需要先放置opendialog,然后调用wordapplication.documents.open:

var

itemindex :olevariant;

filename, confirmconversions, readonly, addtorecentfiles,

passworddocument, passwordtemplate, revert,

writepassworddocument, writepasswordtemplate, format: olevariant;

begin

if not dlgopen.execute then

exit;

{open document}

filename := dlgopen.filename;

confirmconversions := false;

readonly := false;

addtorecentfiles := false;

passworddocument := '';

passwordtemplate := '';

revert := true;

writepassworddocument := '';

writepasswordtemplate := '';

format := wdopenformatdocument;

wordapplication.documents.open( filename, confirmconversions,

readonly, addtorecentfiles, passworddocument, passwordtemplate,

revert, writepassworddocument, writepasswordtemplate, format );

{assign worddocument component}

itemindex := 1;

worddocument.connectto(wordapplication.documents.item(itemindex));

{turn spell checking of because it takes a long time if enabled and slows down winword}

wordapplication.options.checkspellingasyoutype := false;

wordapplication.options.checkgrammarasyoutype := false;

end;

让word替换标记字符串要使用worddocument.range.find.execute,这里用delphi替换了<#name>:

var

findtext, matchcase, matchwholeword, matchwildcards, matchsoundslike,

matchallwordforms, forward, wrap, format, replacewith, replace: olevariant;

begin

findtext := '<#name>';

matchcase := false;

matchwholeword := true;

matchwildcards := false;

matchsoundslike := false;

matchallwordforms := false;

forward := true;

wrap := wdfindcontinue;

format := false;

replacewith := 'delphi';

replace := true;

worddocument.range.find.execute( findtext, matchcase, matchwholeword,

matchwildcards, matchsoundslike, matchallwordforms, forward,

wrap, format, replacewith, replace );

end;

上面这4段代码完成了公文管理的基本功能,再把它和数据库结合起来,就可以开发一个与lotus notes类似的产品了。


jinjiajun 2003-10-17
  • 打赏
  • 举报
回复
WinExec('winword.exe',SW_SHOWNORMAL);

无聊的小船 2003-10-17
  • 打赏
  • 举报
回复
这个问题,还蛮复杂的吗?得好好考虑!
chw_csdn_chw 2003-10-17
  • 打赏
  • 举报
回复
WinExec(路径+可执行文件名称,SW_SHOWNORMAL);
最好加上路径,因为如果可执行文件在系统默认的环境变量中找不到的话,就无法执行

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧