用BCB制作windows补丁批量安装程序的问题 - C++ Builder / Windows SDK/API
本机上有若干个windows系统补丁,做了一个程序批量安装这些补丁,
程序界面用stringgrid列出了这批补丁的名字,现在想每安装完成一个补丁,就在stringgrid中对应补丁名字的那行显示"完成"二字,然后再装下一个补丁,而不是全部安装完后再一次过显示全部安装完成.
问题是,程序如何判断一个补丁安装完成,然后及时在stringgrid显示结果?即一个windows补丁安装完成后,我的
附:我执行补丁的方法是Winexec("补丁文件名 /quiet /passive /nobackup /norestart", SW_HIDE)
[解决办法]
不要用Winexec,因为它是多线程执行的,用CreateProcess,且你可以得到它的返回值
PROCESS_INFORMATION pi;
STARTUPINFO si;
// Set up the start up info struct.
ZeroMemory(&si,sizeof(STARTUPINFO));
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
CreateProcess(NULL,"补丁文件名 /quiet /passive /nobackup /norestart", NULL, NULL, 0,
NULL, NULL, NULL, &si, &pi);
WaitForSingleObject(pi.hThread,INFINITE);
CloseHandle(pi.hThread);
DWORD excode=0;
GetExitCodeProcess(pi.hProcess,&excode);
一般情况下excode为0表示程序执行成功