Here's a wrapper function that should be able to do what you want:

Code:
BOOL ExecuteAndWaitForCompletion ( LPCTSTR pszCmd)
{
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	
	ZeroMemory ( &si, sizeof ( STARTUPINFO));
	
	si.cb = sizeof ( STARTUPINFO);
	si.dwFlags = STARTF_USESHOWWINDOW;
	si.wShowWindow = SW_HIDE;
	
	bRes     =     CreateProcess ( NULL,
		pszCmd
		NULL,
		NULL,
		TRUE,
		NORMAL_PRIORITY_CLASS,
		GetEnvironmentStrings     (),
		NULL,
		&si,
		&pi
		);
	
	WaitForSingleObject (     pi.hProcess,     INFINITE);
	
	CloseHandle( pi.hProcess);
	CloseHandle( pi.hThread);
	
	return ( bRes);
}