Windows 如何使用默认程序从网络驱动器/路径打开文件?

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” 文件的路径是正确的,在资源管理器中单击它可以正常工作 谢谢 更新:我发现了问题。请参见下面的答案。我尝试了以下两个

在我的应用程序中,我想用默认的windows程序从网络驱动器打开文件(jpg、pdf等)。我知道
start
,但它似乎不适用于网络路径

我尝试了以下命令,但我得到的只是windows对话框,它告诉我他不知道如何打开该文件,以及我想使用web服务请求程序还是手动选择

从cmd.exe(p:\是一个网络驱动器):

cmd/c“start\server\path\to\image.jpg”

文件的路径是正确的,在资源管理器中单击它可以正常工作

谢谢


更新:我发现了问题。请参见下面的答案。

我尝试了以下两个命令:

  • 启动Z:\SQLWriter.doc
  • 开始\192.168.10.230\MyFolder\SQLWriter.doc
  • 两个命令都非常有效。我没有收到任何错误消息。 如果您想启动它,可以使用这些

     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)
    

    或者您可以通过此链接:

    我尝试了以下两个命令:

  • 启动Z:\SQLWriter.doc
  • 开始\192.168.10.230\MyFolder\SQLWriter.doc
  • 两个命令都非常有效。我没有收到任何错误消息。 如果您想启动它,可以使用这些

     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或框架中的等效调用。