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
你如何轉換爲這種格式的路徑? – poolie
@pool:使用GetShortPathName(https://msdn.microsoft.com/en-us/library/windows/desktop/aa364989.aspx)。但是一個簡短的樣式路徑名並不總是可用的,它可以被系統管理員禁用。 – dalle