[英]C/C++ CreateFileA fails
我正在嘗試制作一個圖像查看器,當我對文件的路徑進行硬編碼時一切正常,但是當我嘗試獲取路徑以便我可以用它打開文件時,它不起作用,沒有任何反應。
調試時,我發現CreateFileA
返回INVALID_HANDLE_VALUE
。
這讓我相信錯誤應該在這兩行代碼中。
LPSTR FileA = GetCommandLine();
HANDLE FileHandle = CreateFileA(FileA, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
當CreateFileA()
在失敗時返回INVALID_HANDLE_VALUE
時,使用GetLastError()
找出失敗的原因。 但在這種情況下, GetCommandLine()
可能不會返回您期望的路徑。
假設實際上是在調用 Win32 GetCommandLineA()
function,而不是程序中的其他一些 function,那么 function 返回用於啟動調用進程的命令行,即"C:\<path>\myapp.exe <parameters>"
。 如果不存在<parameters>
,那么您將嘗試打開您自己程序的 EXE,而不是圖像文件。 如果存在<parameters>
,那么您將向CreateFileA()
傳遞無效的文件路徑。
您需要解析命令行以提取您真正想要的文件路徑,然后您可以嘗試在該路徑打開文件。 查看解析 C 命令行 Arguments和解析 C++ 命令行 Arguments 。 考慮使用CommandLineToArgvW()
來簡化操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.