DELPHI 5种运行程序的方法具体应用实例(带参数)

http://www.02t.cn/article/code/102.html

https://msdn.microsoft.com/en-us/library/windows/desktop/ms687393(v=vs.85).aspx

一段代码,从2007转到XE 下,编译,运行,发现

WinExec 不能运行指定的EXE文件,换成 ShellExecute 虽然可以了。

测试后,发现还真是有这个问题。有问题的地方就有原因。

原因是从 string 转换到 Pansichar 时,要先 ansistring,然后pansichar。
只有pansichar 是不行的,好像是丢失数据了。
2007下2种方式都能运行
procedure TForm1.Button1Click(Sender: TObject);
var
 sfile: string;
begin
  sfile := 'c:windows
otepad.exe';
  WinExec(PChar(sfile), SW_SHOWNORMAL)
//  WinExec('c:windows
otepad.exe', SW_SHOWNORMAL)
end;


XE XE7下,只有第二种能运行,就是文件名 不能使用变量。

procedure TForm1.Button1Click(Sender: TObject);
var
 sfile: string;
begin
  sfile := 'c:windows
otepad.exe';
  WinExec(PAnsiChar(sfile), SW_SHOWNORMAL)
//  WinExec('c:windows
otepad.exe', SW_SHOWNORMAL)
end;
原文地址:https://www.cnblogs.com/CodeGear/p/4323245.html