2013-01-22 50 views
0

我在圖像文件上使用其路徑中的空格運行PhotoViewer時遇到問題。在圖像文件上使用路徑中的空格運行Windows PhotoViewer

我使用C++函數CreateProcess,提供一個命令行作爲它的參數。命令行模板爲:

"rundll32 <path to PhotoViewer.dll> ImageView_Fullscreen <path to image> " 
e.g. 
"rundll32 \"C:\\Program Files\\Windows Photo Viewer\\PhotoViewer.dll\" ImageView_Fullscreen Z:\\Documents\\Projects\\ScreenCapture1\\ScreenCapture\\ScreenCapture\\sample.bmp" 

這裏的問題是,必須沒有雙引號且不能包含空格。

我的代碼是多還是少這樣

_tcscpy_s(str, 200, _T("rundll32 \"C:\\Program Files\\Windows Photo Viewer\\PhotoViewer.dll\" ImageView_Fullscreen Z:\\Documents\\Projects\\ScreenCapture1\\ScreenCapture\\ScreenCapture\\sample.bmp")); 
CreateProcess(NULL,   // No module name (use command line). 
     str,   // Command line. 
     NULL,   // Process handle not inheritable. 
     NULL,   // Thread handle not inheritable. 
     FALSE,   // Set handle inheritance to FALSE. 
     0,    // No creation flags. 
     NULL,   // Use parent's environment block. 
     NULL,   // Use parent's starting directory. 
     &si,   // Pointer to STARTUPINFO structure. 
     &pi);   // Pointer to PROCESS_INFORMATION structure. 

HANDLE hProcess = pi.hProcess; 
CloseHandle(hProcess); 

現在我要與它的路徑空間中的圖像文件運行PhotoViewer,例如

C:\the folder\has spaces\the image file.bmp 

回答

1

使用舊的Windows風格的路徑如果在其中有波浪形的空間。

例如,

c:\thefol~1\hasspa~1\theima~1.bmp 
+0

你如何轉換爲這種格式的路徑? – poolie

+1

@pool:使用GetShortPathName(https://msdn.microsoft.com/en-us/library/windows/desktop/aa364989.aspx)。但是一個簡短的樣式路徑名並不總是可用的,它可以被系統管理員禁用。 – dalle

相關問題