Bu "basit" sorun, yan sorunları ile dolu gibi görünüyor. Örneğin,
. Yeni işlem birden çok pencereyi açar mı; Bir açılış ekranı var mı?
Basit bir yolu var mı? Uygulama başladıktan kadar programınızı duraklatmak içinKabukExecuteEx tarafından açılan pencerenin hWnd nasıl .. 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?
}
...
Teşekkür Jon ... Yani kısa aralıklı yoklama ... ben ... şimdi örnek üzerinden ve çalışıyorum anlamda :) –
yapar gitmek yoludur Önceki yorumuma PS: Sadece MSDN'de fark ettim: WaitForInputIdle sadece uygulama başlangıcında değil, herhangi bir zamanda kullanılabilir. Ancak, WaitForInputIdle bir işlemin boşta kalması için yalnızca bir kez bekler; Süreç boşta mı yoksa meşgulse, sonraki WaitForInputIdle çağrıları hemen geri döner. * Yoklama iyi bir fikir değil gibi görünüyor ... Birkaç test yapacağım. –
Süreç oluşturulduğunda yalnızca WaitForInputIdle kullanmanız gerekir. Bundan sonra, EnumWindows'un güncellenen pencere listesini almasını çağır. –