2011-06-24 41 views
1

我的应用程序我想用网络驱动器的默认windows程序打开文件(jpg,pdf,..)。我知道start,但它似乎不适用于网络路径。如何使用默认程序从网络驱动器/路径打开文件?

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

从cmd.exe的(P:\是网络驱动器):

CMD/C “开始\服务器\路径\到\ image.jpg的”

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

的该文件的路径是正确的,并在浏览器中单击它工作正常。

谢谢

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

+0

我想你应该使用[shell函数](http://msdn.microsoft.com/en-us/library/bb776426.aspx),而不是cmd.exe/start.exe,米不知道哪一个。 [的ShellExecuteEx](http://msdn.microsoft.com/en-us/library/bb762154.aspx)?我原以为有更简单的事情。 – Rup

回答

2

我想你需要的功能的ShellExecute - 这将是这个样子:

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

附:我知道我应该发表评论,但不能评论所有帖子。

+1

+1看起来像是对我的回应! – Rup

2

我想这两个命令:

  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

+0

你说得对。我尝试了不同的文件(.txt和.doc),它们也可以工作。似乎我只有.jpg问题。 – ZeissS

+0

为什么要通过cmd.exe并启动?无法ShellExecuteEx直接打开文件? – Rup

+0

@Rup:我不是应用程序的开发人员。他告诉我他使用'start',所以我尝试了手动和问题。此外,该应用程序不是用C/C++编写的,所以我不确定他是否可以使用ShellExecuteEx。 – ZeissS

1

好的,我发现了这个问题。似乎Windows注册表有点困惑。 正如之前所评论的,其他文件如文本和文档可以工作,所以唯一的问题是JPEG文件。

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

相关问题