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\notepad.exe';

  WinExec(PChar(sfile), SW_SHOWNORMAL)

//  WinExec('c:\windows\notepad.exe', SW_SHOWNORMAL)

end;





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



procedure TForm1.Button1Click(Sender: TObject);

var

 sfile: string;

begin

  sfile := 'c:\windows\notepad.exe';

  WinExec(PAnsiChar(sfile), SW_SHOWNORMAL)

//  WinExec('c:\windows\notepad.exe', SW_SHOWNORMAL)

end;

 

你可能感兴趣的:(Delphi)