2012-08-28 73 views
-1

我想使用shellexecuteEX調用dpinst.exe /u .\\foldername\\foldername\\inffile.inf \d。這個怎麼做。對不起,我對多個參數感到困惑。我試着下面的代碼不工作。shellexecuteEx具有多個參數

hExecInfo.lpParameters = TEXT ("/u .\\dist\\Driver\\inffile.inf /d"); 
ShExecInfo.lpFile = TEXT (".\\dist\\dpinstx86.exe"); 

如何使它工作?

+0

它是否有一個或沒有參數的工作? – chris

+0

調用ShellExecuteEx()後'GetLastError()'的值是什麼? – hmjd

+0

@chris是它可以使用一個參數。我的疑問是多參數。?該可執行文件正常工作,但預期結果不同。 – 2vision2

回答

1

從張貼的遺漏是cbSize部件的設置:這是必需的

shExecInfo.cbSize = sizeof(shExecInfo); 

(和是很常見的與接受struct S以外WINAPI函數)。

+0

我在想,因此我的評論。我想我們最終會看到是否正確。 – chris

+0

我分配了cbsize。即使在那之後,我沒有得到預期的結果。問題是將多個參數傳遞給exe。 – 2vision2

1

當執行.exe文件,你真的應該使用CreateProcess()代替ShellExecute/Ex(),如:

STARTUPINFO si = {sizeof(STARTUPINFO), 0}; 
PROCESS_INFORMATION pi = {0}; 

TCHAR szCmdLine[] = TEXT(".\\dist\\dpinstx86.exe /u .\\foldername\\foldername\\inffile.inf \d"); 

if (CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) 
{ 
    CloseHandle(pi.hThread); 
    CloseHandle(pi.hProcess); 
}