【问题标题】:How to open a file from network drive/path with default program?如何使用默认程序从网络驱动器/路径打开文件?
【发布时间】:2011-09-21 21:22:11
【问题描述】:

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

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

来自 cmd.exe(P:\ 是网络驱动器):

cmd /c "启动\server\path\to\image.jpg"

> cmd /c "start P:\path\to\image.jpg"

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

谢谢

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

【问题讨论】:

  • 我认为您应该使用shell functions 之一,而不是 cmd.exe / start.exe,但我不确定是哪一个。 ShellExecuteEx?我还以为有更简单的东西。

标签: windows windows-7 windows-xp cmd


【解决方案1】:

我试过这两个命令:

  1. 启动 Z:\SQLWriter.doc
  2. 启动\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)

或者你可以通过这个链接:http://www.codeguru.com/forum/showthread.php?t=302501

【讨论】:

  • 你是对的。我尝试了不同的文件(.txt 和 .doc),它们也能正常工作。好像我只有 .jpg 的问题。
  • 为什么要通过cmd.exe启动? ShellExecuteEx不能直接打开文件吗?
  • @Rup:我不是应用程序的开发者。他告诉我他使用start,所以我手动尝试了它,也遇到了问题。此外,该应用程序不是用 C/C++ 编写的,所以我不确定他是否可以使用ShellExecuteEx
  • 嗯。 start 的麻烦在于,如果您需要引用空格等,那么您必须首先包含带引号的标题,否则它将假定您的路径是新窗口的标题。如果它对你有用,那就太好了——但无论是哪种语言/框架,都会有一种方法可以直接使用 ShellExecute 或框架中的等效调用。
【解决方案2】:

我认为您需要的函数是 ShellExecute - 它看起来像这样:

ShellExecute(ParentWindowHandl, "open", "Z:\SQLWriter.doc", NULL, SW_SHOWNORMAL);

附:我知道我应该将此作为评论发布,但还不能对所有帖子发表评论。

【讨论】:

    【解决方案3】:

    好的,我找到了问题所在。似乎Windows注册表有点混乱。 如前所述,其他文件(如 text 和 doc)可以工作,所以唯一的问题是 JPEG 文件。

    在 Windows 资源管理器中双击它们对它们来说效果很好,但是使用 start 命令向我显示了上述弹出窗口。在这里选择一个程序并将其标记为永久解决了我的问题。使用start 进一步调用现在可以正确直接打开图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多