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;