7
這個「簡單」問題似乎充滿了側面問題。
例如。新過程是否打開多個窗口;它有一個啓動畫面嗎?
有沒有簡單的方法? (我開始記事本的新實例++)如何獲得由ShellExecuteEx打開的窗口的hWnd .. hProcess?
...
std::tstring tstrNotepad_exe = tstrProgramFiles + _T("\\Notepad++\\notepad++.exe");
SHELLEXECUTEINFO SEI={0};
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = hWndMe; // This app's window handle
sei.lpVerb = _T("open");
sei.lpFile = tstrNotepad_exe.c_str();
sei.lpParameters = _T(" -multiInst -noPlugins -nosession -notabbar ";
sei.lpDirectory = NULL;
sei.nShow = SW_SHOW;
sei.hInstApp = NULL;
if(ShellExecuteEx(&sei))
{ // I have sei.hProcess, but how best to utilize it from here?
}
...
感謝喬恩......這麼短的時間間隔輪詢是去......這是有道理的:) – 2010-07-16 23:34:06
我通過你的榜樣,現在的工作...... 和方式PS到我以前的評論:我只是在MSDN中注意到:WaitForInputIdle可以隨時使用,而不僅僅是在應用程序啓動過程中。 但是,WaitForInputIdle只等待進程變空閒一次;後續的WaitForInputIdle調用立即返回,無論進程是空閒還是繁忙。 *似乎民意測驗不是一個好主意......我會做一些測試。 – 2010-07-16 23:57:40
創建進程時,您只需要使用WaitForInputIdle。從此,只需輪詢EnumWindows調用即可獲取更新的窗口列表。 – 2010-07-17 00:40:30