Windows 如何使用默认程序从网络驱动器/路径打开文件?
在我的应用程序中,我想用默认的windows程序从网络驱动器打开文件(jpg、pdf等)。我知道Windows 如何使用默认程序从网络驱动器/路径打开文件?,windows,windows-7,windows-xp,cmd,Windows,Windows 7,Windows Xp,Cmd,在我的应用程序中,我想用默认的windows程序从网络驱动器打开文件(jpg、pdf等)。我知道start,但它似乎不适用于网络路径 我尝试了以下命令,但我得到的只是windows对话框,它告诉我他不知道如何打开该文件,以及我想使用web服务请求程序还是手动选择 从cmd.exe(p:\是一个网络驱动器): cmd/c“start\server\path\to\image.jpg” 文件的路径是正确的,在资源管理器中单击它可以正常工作 谢谢 更新:我发现了问题。请参见下面的答案。我尝试了以下两个
start
,但它似乎不适用于网络路径
我尝试了以下命令,但我得到的只是windows对话框,它告诉我他不知道如何打开该文件,以及我想使用web服务请求程序还是手动选择
从cmd.exe(p:\是一个网络驱动器):
cmd/c“start\server\path\to\image.jpg”
文件的路径是正确的,在资源管理器中单击它可以正常工作
谢谢
更新:我发现了问题。请参见下面的答案。我尝试了以下两个命令:
SHELLEXECUTEINFO ExecuteInfo;
memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));
ExecuteInfo.cbSize = sizeof(ExecuteInfo);
ExecuteInfo.fMask = 0;
ExecuteInfo.hwnd = 0;
ExecuteInfo.lpVerb = "open"; // Operation to perform
ExecuteInfo.lpFile = "cmd.exe"; // Application name
ExecuteInfo.lpParameters = "start P:\Myfile.jpg"; // Additional parameters
ExecuteInfo.lpDirectory = 0; // Default directory
ExecuteInfo.nShow = SW_SHOW;
ExecuteInfo.hInstApp = 0;
if(ShellExecuteEx(&ExecuteInfo) == FALSE)
或者您可以通过此链接:我尝试了以下两个命令:
SHELLEXECUTEINFO ExecuteInfo;
memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));
ExecuteInfo.cbSize = sizeof(ExecuteInfo);
ExecuteInfo.fMask = 0;
ExecuteInfo.hwnd = 0;
ExecuteInfo.lpVerb = "open"; // Operation to perform
ExecuteInfo.lpFile = "cmd.exe"; // Application name
ExecuteInfo.lpParameters = "start P:\Myfile.jpg"; // Additional parameters
ExecuteInfo.lpDirectory = 0; // Default directory
ExecuteInfo.nShow = SW_SHOW;
ExecuteInfo.hInstApp = 0;
if(ShellExecuteEx(&ExecuteInfo) == FALSE)
或者您可以通过以下链接:我认为您需要的功能是ShellExecute-它看起来像这样:
ShellExecute(ParentWindowHandl, "open", "Z:\SQLWriter.doc", NULL, SW_SHOWNORMAL);
另外,我知道我应该将此作为评论发布,但还不能对所有帖子发表评论。我认为您需要的功能是ShellExecute-它看起来像这样:
ShellExecute(ParentWindowHandl, "open", "Z:\SQLWriter.doc", NULL, SW_SHOWNORMAL);
另外,我知道我应该将此作为评论发布,但还不能对所有帖子发表评论。好的,我发现了问题所在。windows注册表似乎有点混乱。 如前所述,文本和文档等其他文件也可以工作,因此唯一的问题是JPEG文件
在Windows资源管理器中双击它们效果很好,但是使用
start
命令显示了上述弹出窗口。在这里选择一个程序并将其标记为永久解决了我的问题。使用start
的进一步调用现在可以正确地直接打开图像。好的,我发现了问题。windows注册表似乎有点混乱。
如前所述,文本和文档等其他文件也可以工作,因此唯一的问题是JPEG文件
在Windows资源管理器中双击它们效果很好,但是使用
start
命令显示了上述弹出窗口。在这里选择一个程序并将其标记为永久解决了我的问题。使用start
的进一步调用现在可以正确地直接打开图像。我认为您应该使用其中一个,而不是cmd.exe/start.exe,但我不确定是哪一个?我本以为有更简单的方法。我认为您应该使用其中一种,而不是cmd.exe/start.exe,但我不确定是哪一种?我本以为有更简单的事,你说得对。我尝试了不同的文件(.txt和.doc),它们也可以工作。似乎我只有.jpg的问题。为什么要通过cmd.exe启动?ShellExecuteEx不能直接打开文件吗?@Rup:我不是应用程序的开发人员。他告诉我他使用的是start
,所以我手动尝试了一下,也解决了一些问题。此外,该应用程序不是用C/C++编写的,因此我不确定他是否可以使用ShellExecuteEx
.Hmm。start的麻烦在于,如果您需要为空格等引用,那么您必须首先包含引用的标题,否则它将假定您的路径是新窗口的标题。如果它对你有用的话,那就太好了——但是不管是什么语言/框架,都会有一种直接使用ShellExecute的方法,或者在框架中使用一个等价的调用。你是对的。我尝试了不同的文件(.txt和.doc),它们也可以工作。似乎我只有.jpg的问题。为什么要通过cmd.exe启动?ShellExecuteEx不能直接打开文件吗?@Rup:我不是应用程序的开发人员。他告诉我他使用的是start
,所以我手动尝试了一下,也解决了一些问题。此外,该应用程序不是用C/C++编写的,因此我不确定他是否可以使用ShellExecuteEx
.Hmm。start的麻烦在于,如果您需要为空格等引用,那么您必须首先包含引用的标题,否则它将假定您的路径是新窗口的标题。如果它对您有效,那就太好了——但是不管是哪种语言/框架,都会有一种方法可以直接使用ShellExecute或框架中的等效调用。