我本来是用winexec调用一个exe程序,exe程序运行也完全没有问题。
现在想要用shellexecute传个参数,使exe程序本身双击不能直接运行,一定要通过接收到这个参数才运行。写法:winexec(PChar('d:\aaa.exe'),SW_SHOWNORMAL);aaa.exe程序不做任何处理;aaa.exe程序能正常调用和退出。 shellexecute(handle, 'open','d:\aaa.exe','aaa',nil,SW_SHOWNORMAL);在aaa.exe程序的工程文件中加入以后判断:
for i:=1 to paramcount do
if ParamStr(i)<>'aaa' then
halt;
aaa.exe程序能正常调用,但退出的时候就报内存出错,具体的提示是内存不能"read"。搞了几天了,没有明白问题出在哪里,麻烦大家看看啊,是不是我aaa.exe程序本来就存在内存的问题呢?因为我测试了一个简单的程序,用shellexecute传个参数也是能正常调用和退出的。但如果是aaa.exe本身有问题的话,用winexec调用后退出程序为什么没有报内存错呢???
现在想要用shellexecute传个参数,使exe程序本身双击不能直接运行,一定要通过接收到这个参数才运行。写法:winexec(PChar('d:\aaa.exe'),SW_SHOWNORMAL);aaa.exe程序不做任何处理;aaa.exe程序能正常调用和退出。 shellexecute(handle, 'open','d:\aaa.exe','aaa',nil,SW_SHOWNORMAL);在aaa.exe程序的工程文件中加入以后判断:
for i:=1 to paramcount do
if ParamStr(i)<>'aaa' then
halt;
aaa.exe程序能正常调用,但退出的时候就报内存出错,具体的提示是内存不能"read"。搞了几天了,没有明白问题出在哪里,麻烦大家看看啊,是不是我aaa.exe程序本来就存在内存的问题呢?因为我测试了一个简单的程序,用shellexecute传个参数也是能正常调用和退出的。但如果是aaa.exe本身有问题的话,用winexec调用后退出程序为什么没有报内存错呢???
在要运行的程序中:winexec(pchar(myrun),SW_SHOW);//其中myrun为一程序(包括路径)、用户名、密码的字符串
在aaa.exe程序的主表单的onCreate事 件中加入检查
例:
if paramCount<>2 then
begin
showmessage('请从OA中运行此程序');
application.terminate;
end
else begin
curr_user:=paramStr(1);
curr_passwd:=paramStr(2); //
sys_path:=ExtractFilePath*paramStr(0);
connect_database;
end;
用winexec带参数结果也是一样,退出被调用程序还是报内存不能"read"。
不管我用winexec还是shellexecute,只要不带参数就可以,带了参数就出那个错。急啊,麻烦大家看看啊!
试一下,若还是报错误,则是你的aaaa.exe程序有问题
如果是这种情形,我这么理解不知道是否正确:
winexec可能是在当前目录下执行,因此可能正确。
shellexecute需要指定运行目录,默认是nil,这个时候指向的可能和winexec方式指定的运行路径。