DELPHI中怎样调用WORD97等应用程序(100分)

  • 主题发起人 主题发起人 lixingxu
  • 开始时间 开始时间
L

lixingxu

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在DELPHI中调用财务、统计软件,百思不得其解,请行家指教!
 
winexec可以吗?
 
就是winexec调用呀,
winexec('winword.exe',sw_shownormal);
xixi,捡个皮夹子
 
小天;
钱包是我丢的,还给我!
 
create一个ole不就可以了:-)
 
D5的server组控件专门有一大批通过OLE控制OFFICE程序的控件。
具体这些控件的用法参考D5的HELP。
用到具体的属性和方法,要看VBA的定义了。(OFFICE的宏语言定义)
使用这些OLE,可以实现程序控制OFFICE做任何的事,自动化很高,
不过就是用户一定要有完整的OFFICE宏功能。有时候OFFICE坏了些
东西都不行的。
 
用ole 没错。
 
在Delphi程序中代有这种例子呀!
而Delphi5中还代有专门控制Office一系列软件的控件。
 
看清题目:"<font color=red>调用</font>",不是"嵌入"!
 
to cAkk
我说的也是调用呀!
D5的Server组控件是另外调用Office程序,能并通它控件Office工作,得确很好
用的我本想用它作报表,只是速度慢了点。
 
>>>我想在DELPHI中调用财务、统计软件,百思不得其解,请行家指教!
人家说是"Office"软件了吗? 请问哪个office软件是"财务、统计软件"?????
 
他自己编的!?
 
甭管是自己编的程序,还是"用友","金蝶"之类的东西, 请问用ole,
或曰"office组件"怎样调用?
 
题目不是"DELPHI中怎样调用WORD97等应用程序"吗?
怎么变成了"在DELPHI中调用财务、统计软件"。
不知是我粗心未看内容,还是问家把题目写错了。
要在Delphi中调用""用友","金蝶"之类的东西",最好要他们提供程序
接囗,最近接了一个活儿,就是同"用友"的程序连接,由"用友"提供接囗。
 
程云: 顺便问一下:"用友"现在用的是什么数据库?
 
听说用SQL了吧,才升的
 
调用外部程序,并且想知道它的运行状态,可以用我提供的片段.可能需要改改.
如果对你有用,就请给分吧!

Function {TCustomExecExtApp.}Execute(ComLine : String):boolean;
var
FAppHandle : THandle;
lpAppName : pchar;
lpTitle : Pchar;
StartInfo : TStartupInfo;
FProcessInfo : TProcessInformation;
begin
if (Length(ComLine)+2)>255 then
begin
SetError(-1,'Command Line Too Long!');
Result := false;
exit;
end;

GetMem(lpAppName,MaxPath);
GetMem(lpTitle,MaxPath);
StrPCopy(lpAppName,ComLine);
StrPCopy(lpTitle,ComLine);
//init StartInformation
StartInfo.cb:=sizeof(TStartupInfo);
StartInfo.lpReserved := NIL;
StartInfo.lpDesktop:=NIL;
StartInfo.lpTitle := lpTitle;
StartInfo.dwFillAttribute := 0;
StartInfo.cbReserved2 :=0;
StartInfo.lpReserved2 := NIL;
//这个参数控制Create Window形态
//STARTF_USESHOWWINDOW 指定这个标志位,指示用ShowWindow的参数建立窗口
StartInfo.dwFlags := STARTF_USESHOWWINDOW;
StartInfo.wShowWindow := FWinStyle;
//CreateProcess 在Windows.pas中的一个原形
//function CreateProcessA(lpApplicationName: PAnsiChar;
lpCommandLine: PAnsiChar;
//lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
//bInheritHandles: BOOL;
dwCreationFlags: DWORD;
lpEnvironment: Pointer;
//lpCurrentDirectory: PAnsiChar;
const lpStartupInfo: TStartupInfo;
//var lpProcessInformation: TProcessInformation): BOOL;
stdcall;
//Clear ProcessInfo Structure
FProcessInfo.hProcess := 0;
FProcessInfo.hThread := 0;
FProcessInfo.dwProcessId := 0;
FProcessInfo.dwThreadId := 0;
//Create process
if CreateProcess(NIL,
lpAppName,
nil,
nil,
False,
0,
nil,
nil,
StartInfo,
FProcessInfo) then
begin
//Command Executed
//为进程建立可查询的属性。
FAppHandle := OpenProcess(PROCESS_QUERY_INFORMATION,False,FProcessInfo.dwProcessId);
//建立可查询的属性后可用于GetExitCodeProcess,在Delphi中查询外部程序是
//否还在运行,这个函数在W95,W98,NT40下均可用.
//注意:FAppHandle要改成Form的变量,以便其它函数可以使用.
// GetExitCodeProcess(FAppHandle,FAppState);
// if FAppState<>STILL_ACTIVE then
// 外部程序已结束
// else
// 外部程序还在运行
end
else
//false Create Process;
begin
SetError(-2,'Can not create process!');
Result := false;
end;

FreeMem(lpAppName);
FreeMem(lpTitle);
end;
 
to cAkk
"用友"以前自然用的是DBase的数据库,而现在用的就不太清楚了,
想必不会用太大的系统。
我们的那项工作两年月后才开始,而且又很简单。
 
后退
顶部