在Delphi4.0中调用其他程序(50分)

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

wangzs

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi 4.0中如何调用(执行)其他程序, 如windows的命令, 其他
可执行文件等。(无法用ExecuteFile(...)函数来执行。
 
WinExec可以搞定
 
对wjinachun:
请问如何在Delphi 4.0中调用 WinExec?
在help中怎么查不出winexec函数?
 
This function is provided for compatibility with earlier versions of Windows. For Win32-based applications, use the CreateProcess function.
UINT WinExec(
LPCSTR lpCmdLine, // address of command line
UINT uCmdShow // window style for new application
);

帮助在 ms sdk中.
在delphi中输入函数名,选中,按 F1
 
要查win32api help:
在 delphi4/help/delphi4.cnt 加一行:
:Index win32 = c:/borland/borland shared/mshelp/win32.hlp (这里改成你实际安装的路径)
执行其他程序有
WinExec CreateProcess ShellExecute 多种
 
还可以用CreateProcess
BOOL CreateProcess(
LPCTSTR lpApplicationName,
// pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to
PROCESS_INFORMATION
);

参数比较多,但可以对该程序进行完全控制,
比如优先级,进程 等待,同步等
 
可以用Shellexecute()函数。
 
procedure TForm1.Button1Click(Sender: TObject);
var
st:TStartUpInfo;
pp:TProcessInformation;
ppp:Thandle;
tt:Cardinal;
begin
FillChar(st,sizeof(st),#0);
with stdo
begin
cb:=sizeof(st);
dwFlags:=StartF_UsesTDHandles or STARTF_USESHOWWINDOW;
lptitle:=nil;
wShowWindow:=SW_SHOW;
end;
CreateProcess(PChar('c:/program files/microsoft office/office/winword.exe'),
nil,nil,nil,true,DETACHED_PROCESS,nil,nil,st,pp);
ppp:=OpenProcess(PROCESS_ALL_ACCESS, FALSE,pp.dwProcessId );
GetExitCodeProcess(ppp,tt);
Exitprocess(tt)
// TerminateProcess(ppp,0);也可代替GetExitCodeProcess与ExitProcess终止进程
end;

 
用shellexecute可以打开文件、执行程序和运行参数。用winexec则只能执行程序
uses
Forms,Shellapi,Windows,SysUtils;
{$R *.RES}
var sDir:string;
begin
Application.Initialize;
sDir:=ExtractFilePath(ParamStr(0));
ShellExecute(application.handle,'open',pchar(sDir + 'alams.EXE'),'1',nil,SW_Show);
Application.Run;
Halt;
end.
 
WINEXEC('CALC.EXE',SW_SHOWNORMAL)
WINEXEC('EXPLORER.EXE',SW_SHOWNORMAL);
 
直接用下面这个代码就行了
str1:='open';
str2:=pchar(填入需要执行的程序路径);
ShellExecute(self.Handle,str1,str2,'','',sw_show);
或者用delphi的ole空间也可以实现!
 
接受答案了.
 
后退
顶部