为什么 shellexecute 总是返回错误代码 5?

问题描述 投票:0回答:2

VFP9 SP2 从命令窗口运行的代码非常简单。这是在我的个人工作站上。我是“一切”/管理员。无论是我从互联网上下载的 pdf(例如小册子)还是我创建的 pdf,都没有关系。我可以通过从文件资源管理器中双击 pdf 文件来打开它。

VFP 始终返回错误代码 5。

DECLARE INTEGER ShellExecute IN shell32.dll ;
 INTEGER hndWin, ;
 STRING cAction, ;
 STRING cFileName, ;
 STRING cParams, ;
 STRING cDir, ;
 INTEGER nShowWin

?ShellExecute(0,"open","c:\users\jcook\desktop\TLBK460BT.pdf","","",1)`DECLARE INTEGER 

谢谢, 约翰

visual-foxpro
2个回答
1
投票

引自https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutea

SE_ERR_ACCESSDENIED:操作系统拒绝访问指定文件。

所以你的错误代码常量可能看起来像

#DEFINE SE_ERR_ACCESSDENIED 5

1
投票

我在一个客户的 ws 上使用 Adobe Reader 作为默认 pdf 查看器处理了这个问题 - 跳过“为什么” - 这对我有用:

oshell = Createobject('wscript.shell') 
oshell.run('c:\users\jcook\desktop\TLBK460BT.pdf')

更新: 尝试在配置中禁用“保护模式”并使用 shellexecuteex():https://community.adobe.com/t5/acrobat-discussions/how-to-fix-access-denied-when-printing-pdfs-using-createprocess -无禁用保护模式/m-p/12936605?profile.language=es

© www.soinside.com 2019 - 2024. All rights reserved.