由於最近要寫GTest的UI測試,要建立進程並向其發送訊息。但是CreateProcess這個函數卻一開始老是失敗。
TEST(Clean_Up_Tests,Time_Table_Dlg )<br />{<br /> STARTUPINFO siStartInfo;<br /> PROCESS_INFORMATION piProcInfo;<br />// Set up members of STARTUPINFO structure.<br />siStartInfo.cb = sizeof(STARTUPINFO);<br />siStartInfo.lpReserved = NULL;<br />siStartInfo.lpReserved2 = NULL;<br />siStartInfo.cbReserved2 = 0;<br />siStartInfo.lpDesktop = NULL;<br />siStartInfo.dwFlags = 0;</p><p>//the cmdLine<br />TCHAR szCmdLine[_MAX_PATH] = _T("Planet.exe");</p><p>int nCreateResult =<br />CreateProcess(NULL, szCmdLine,<br />NULL, NULL,FALSE, 0, NULL, NULL, &siStartInfo, &piProcInfo);<br /> //......<br />}<br />
查了各種資料,實在是找不到原因。百般無聊之下,我把STARTUPINFO 和 PROCESS_INFORMATION這兩個結構體的定義放在TEST()函數外面時作為一個全域變數時,情況發生了轉機。難道這兩個變數的範圍也會影響到函數的執行過程?可是查遍了各種關於這兩個變數的用法說明,也沒有哪裡提到這一點.把這個現象貼出來,如果能夠協助到也正碰到這個問題的人,就幸甚了.