征求delphi调用外部程序或文件的各种方法

fjtxwd 2008-11-10 10:02:33
最好能有例子
...全文
109 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
okmnji79513 2008-11-11
  • 打赏
  • 举报
回复
同意 WinExec和ShellExecute
天鸽 2008-11-11
  • 打赏
  • 举报
回复
Use shellAPI;
shellexecute(handle,'open',pchar(ExtractFilePath(Paramstr(0))+'Help.CHM'),nil,nil,sw_shownormal);
yuqianyi1974 2008-11-11
  • 打赏
  • 举报
回复
只知道WinExec和ShellExecute
fjtxwd 2008-11-11
  • 打赏
  • 举报
回复
还有其他的方式没?
  • 打赏
  • 举报
回复
谁说WinExec只能调用.EXE文件?

WinExec配合start命令,简直无敌。

执行:
WinExec(PChar('cmd /C start http://www.baidu.com/'), SW_HIDE);

看看打开了没有。
如果没有特殊需求,WinExec配合start效果就不错了。
zhangxiaommmm 2008-11-11
  • 打赏
  • 举报
回复
ShellExecute(Handle,'open','msconfig.exe','','',SW_SHOW);
ShellExecute(Handle,'open','gpedit.msc','','',SW_SHOW);
无条件为你 2008-11-11
  • 打赏
  • 举报
回复
1.WinExec 最方便,但只能调用EXE。例子:WinExec('calc',1);

2.ShellExecute,可以调用任意文件,使用时必须先uses ShellAPI; 例子:ShellExecute(0,0,'calc',0,0,1);

3.CreateProcess,可以调用任意文件,有十个参数,一般主要用作调用进程时返回进程ID。例如我调用一个外部程序后,1分钟后对它进行关闭,这个时候关闭时可以利用返回的进程ID来进行杀进程操作。

4.用Run方法。你可以在你的程序中加载脚本,Js和VBS都有脚本Run方法的,可以直接加载文件,与ShellExecute等效。



关于3,这里给出一个详细例子:


//创建进程并在3秒后杀掉它
procedure TForm1.Button2Click(Sender: TObject);
var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
begin
FillChar(si, SizeOf(si),0);
si.dwFlags := STARTF_USESHOWWINDOW;
si.cb:=SizeOf(si);
si.wShowWindow := SW_Show;
CreateProcess(0,'calc.exe',nil, nil, False,NORMAL_PRIORITY_CLASS, nil, nil,si,pi);
CloseHandle(pi.hProcess);
Sleep(3000);
TerminateProcess(OpenProcess(PROCESS_ALL_ACCESS,FALSE,pi.dwProcessId),0);
end;
qizhf 2008-11-11
  • 打赏
  • 举报
回复
1.WinExec
2.ShellExecute
3.CreateProcess
  • 打赏
  • 举报
回复
ShellExecute很方便,而且能够完成你的要求
日总是我哥 2008-11-10
  • 打赏
  • 举报
回复
googel:

WinExec
ShellExecute
JeffChung 2008-11-10
  • 打赏
  • 举报
回复
打开记事本,并打开一个文件(系统能识别记事本应用程序的路径,因此我们不必使用绝对路径)
ShellExecute(Handle, 'open', PChar('notepad'), PChar('c:\test\readme.txt'), nil, SW_SHOW);




HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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