2011-06-24 110 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進一步通話現在可以直接正確打開圖像。

相關問題