2012-08-28 99 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); 
}