我有一種情況,我希望程序A打開另一個程序B並讓程序B打開指定的文件。我目前正在嘗試通過使用CreateProcess並在命令行參數中傳遞文件路徑來實現此目的。這裏是我的代碼:CreateProcess打開加載文件的程序
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
CreateProcess("C:\\ProgramB.exe", "C:\\MyFile.txt", NULL, NULL,
FALSE, 0, NULL, NULL, &si, &pi);
我在做什麼錯在這裏?程序B的DragAndDrop是真實的,並拖放文件到窗口中工作正常(我嘗試發送一個WM_DROPFILES消息以及沒有成功),和程序B可以打開文件就好,我打開文件對話框,但這個命令有問題稱它無法找到該文件。在評論
那些是你在代碼中使用的確切路徑嗎?或者是文件系統的重定向與您混淆?你的命令行參數中是否有空格?你如何檢測錯誤? – 2013-04-26 16:42:18
@DavidHeffernan沒有那些不是我正在使用的確切路徑,但我希望它適用於任何路徑(我測試的實際路徑類似於「C:\\ Users \\ Paul \\ Desktop \\ MyFolder \ \ MyFile.txt的「)。是的,命令行參數中有空格,因爲文件夾名稱中有一個空格,因此是我的引號。程序B有一個try/catch塊,但它並沒有給我任何信息。也許我應該更多地關注程序B. – CincinnatiProgrammer 2013-04-26 16:47:24
Windows API不會引發異常。嘗試/捕獲不會有任何好處。您需要以正確的方式檢查錯誤。按照文檔中的描述檢查CreateProcess的返回值。如果您調用從命令窗口cmd.exe傳遞參數的可執行文件,會發生什麼情況?如果這樣做你會知道這是可能的。否則,現在放棄。 – 2013-04-26 16:49:10