我用API函数ShellExecute调用EXE文件,并且在调用的过程中打开相关文件。现有如下代码://调用 micaps 2.0
ShellExecute(0, PAnsiChar('open'),
PAnsiChar('C:\MICAPS2\micaps20\MICAPS20.EXE'),
PAnsiChar('"H:\code\PARA1.DAT" "C:\Program Files\ZHT\CLOUD.ZHT"'),
PAnsiChar('C:\MICAPS2\micaps20\'),
SW_SHOW) ;//调用 micaps 1.0
ShellExecute(0, PAnsiChar('open'),
PAnsiChar('H:\code\MICAPS.EXE'),
PAnsiChar('"H:\code\PARA1.DAT" "C:\Program Files\ZHT\CLOUD.ZHT"'),
PAnsiChar('H:\code\'),
SW_SHOW) ;在调用 micaps 2.0 的时候,可以正常调用并打开相关文件,但在调用 micaps 1.0 的时候会出现找不到文件“C:\Program ”。根据ShellExecute的资料称“ PAnsiChar('"H:\code\PARA1.DAT" "C:\Program Files\ZHT\CLOUD.ZHT"') ”一句为传递的参数,各参数要用空格分开。但为什么在调用 micaps 2.0 的时候可以,但在micaps 1.0 的时候却不行。 为什么???
难道还和具体的可执行文件有关么?????请高手指点! 谢谢! :)
ShellExecute(0, PAnsiChar('open'),
PAnsiChar('C:\MICAPS2\micaps20\MICAPS20.EXE'),
PAnsiChar('"H:\code\PARA1.DAT" "C:\Program Files\ZHT\CLOUD.ZHT"'),
PAnsiChar('C:\MICAPS2\micaps20\'),
SW_SHOW) ;//调用 micaps 1.0
ShellExecute(0, PAnsiChar('open'),
PAnsiChar('H:\code\MICAPS.EXE'),
PAnsiChar('"H:\code\PARA1.DAT" "C:\Program Files\ZHT\CLOUD.ZHT"'),
PAnsiChar('H:\code\'),
SW_SHOW) ;在调用 micaps 2.0 的时候,可以正常调用并打开相关文件,但在调用 micaps 1.0 的时候会出现找不到文件“C:\Program ”。根据ShellExecute的资料称“ PAnsiChar('"H:\code\PARA1.DAT" "C:\Program Files\ZHT\CLOUD.ZHT"') ”一句为传递的参数,各参数要用空格分开。但为什么在调用 micaps 2.0 的时候可以,但在micaps 1.0 的时候却不行。 为什么???
难道还和具体的可执行文件有关么?????请高手指点! 谢谢! :)
DOS时代是没有空格文件名的~~
回到原始时代看看:
ShellExecute(0, PAnsiChar('open'),
PAnsiChar('H:\code\MICAPS.EXE'),
PAnsiChar('"H:\code\PARA1.DAT" "C:\Progra~1\ZHT\CLOUD.ZHT"'),
PAnsiChar('H:\code\'),
SW_SHOW) ;
是不是才用 ShellExecute 时,还跟具体调用的EXE文件有关???
请高手继续赐教!
ShellExecute(Handle, nil,
PAnsiChar('H:\code\MICAPS.EXE'),
PAnsiChar(
Format('%s %s', [
ExtractShortPathName('H:\code\PARA1.DAT'),
ExtractShortPathName('C:\Program Files\ZHT\CLOUD.ZHT')]
)
),
PAnsiChar('H:\code\'),
SW_SHOW) ;
end;
PAnsiChar('H:\code\MICAPS.EXE'),
PAnsiChar('H:\code\PARA1.DAT H:\code\LAMBERTM.DAT C:\Progra~1\ZHT\CLOUD.ZHT'),
PAnsiChar('H:\code\'),
SW_SHOW) ;
程序可以正常启动,但是在启动后,只执行了第1个参数(H:\code\PARA1.DAT)和第2个参数(H:\code\LAMBERTM.DAT),第3个参数(C:\Progra~1\ZHT\CLOUD.ZHT)并没有被执行
!!! 这是为什么???
是不是如你说的 “不仅要看操作系统,还要看具体程序”!在我的例子里,是不是有可能micaps.exe只能执行2个参数,多出的就没有办法识别? 但在我的程序中,非得要同时执行那3个参数才能达到目的。这如何是好?
还有,我发现,各参数的位置很重要,否则在EXE文件启动的时候会出错。能否讲解一下关于这方面的知识?
谢谢! :)