在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我们常用的函数有两个,WinExec 和 ShellExecute。 var SDir:string; SetLength(SDir,144); GetWindowsDirectory(PChar(SDir),144); SetLength(SDir,StrLen(PChar(SDir))); SDir:=SDir+'\notepad.exe'+' '+savedialog1.FileName; WinExec(PChar(SDir), SW_SHOWMAXIMIZED);注意:如果 SDir 不是有效路径不会提示错误。 [例] winexec('command.com /c copy *.* c:\',SW_Normal); [例] winexec('start abc.txt'); //加一下按钮,加一个对话框就OK啦 procedure TForm1.Button1Click(Sender: TObject); var S: String; begin if OpenDialog1.Execute then begin s := OpenDialog1.FileName; WinExec( PChar(s), SW_NORMAL); end; end;--------------------------------------------------------------- procedure TForm1.OpenBtnClick(Sender:TObject); begin ShellExecute(handle,'open','notepad.exe',nil,nil,SW_ShowNormal); end;(2)此外,ShellExeCute() 还可以进行链接网络。 [例] procedure TForm1.HttpClick(Sender: TObject); begin ShellExecute(handle,'open','http://liangming.163.net', nil,nil,SW_ShowNormal); end;(3)打开在Windows注册的外部文件 如果一个文件已经在Windows的注册表中注册了,那我们就可以通过以下方法运行他,首先要在uses部分加入: uses Shellapi; 接着定义一个过程 procedure URLink(URL:PChar); begin ShellExecute(0, nil, URL, nil, nil, SW_NORMAL); end; 在要调用的地方使用: URLink('Readme.txt'); 要链接到主页就改用: URLink('http://vortex.yeah.net'); 要发邮件就要在邮件地址前加: mailto URLink('mailto:[email protected]'); 如果是打开外部执行程序的话,那么也可以直接调用。 --------------------------------------------------------------- function RunProgram(ProgramName:string;Wait:Boolean=False):Cardinal; var StartInfo:STARTUPINFO; ProcessInfo:PROCESS_INFORMATION; begin //执行外部程序,失败返回0,成功返回进程句柄 Result:=0; if ProgramName='' then exit; GetStartupInfo(StartInfo); StartInfo.dwFlags:=StartInfo.dwFlags or STARTF_FORCEONFEEDBACK; if not CreateProcess(nil,PChar(ProgramName),nil,nil,false,0, nil,nil,StartInfo,ProcessInfo) then exit; Result:=ProcessInfo.hProcess; //建立进程成功 //如果异步执行则退出 if not wait then exit; while IsProgram_Runing(Result) do Application.ProcessMessages; end; function IsProgram_Runing(hProcess:Cardinal):Boolean; var ExitCode:Cardinal; begin //查看进程是否正在运行 GetExitCodeProcess(hProcess,ExitCode); if ExitCode=STILL_ACTIVE then Result:=True else Result:=False; end; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论