У меня довольно сложная серия приложений, которые зависят от способности переключать приложения на переднем плане.
Моя проблема заключается в том, что каждые 5 или 6 раз при переключении приложений на переднем плане просто не получаетсяподать заявку.GetLastError не сообщает о каких-либо проблемах.Часто я на мгновение вижу правильное приложение на переднем плане, затем видно предыдущее приложение.
У меня есть приложение Manager, для которого у меня есть источник, оно порождает и контролирует около 4 приложений, которых у меня нетисточник для.одно из приложений, которое он порождает / контролирует, - это также менеджер, который порождает / контролирует около 5 приложений.
Это своего рода дизайн киоска, поэтому у пользователя даже не будет клавиатуры или мыши, только сенсорный экран.
Я пробовал каждую комбинацию вызовов Win32, чтобы контролировать их. У меня просто нет идей.
Моя первая попытка была:
SetWindowPos(hApp, HWND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetWindowPos(hApp, HWND_NOTOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
Моя вторая попытка была:
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
моя третья попытка: DWORD dwThreadID = GetWindowThreadProcessId (hApp, NULL);AttachThreadInput (dwThreadID, GetCurrentThreadId (), true);
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
AttachThreadInput( dwThreadID, GetCurrentThreadId(), false);
моя четвертая попытка:
DWORD dwThreadID = GetWindowThreadProcessId(hApp, NULL);
AttachThreadInput( dwThreadID, GetCurrentThreadId(), true);
SetWindowPos(hApp, HWND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetWindowPos(hApp, HWND_NOTOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
AttachThreadInput( dwThreadID, GetCurrentThreadId(), false);
Мне кажется, что я упускаю важный момент, когда дело доходит до переключения окон.Я знаю, что только процесс переднего плана может переключать окна, но поскольку моя главная программа Manager порождает и запускает все другие процессы, которые мне нужно контролировать, я чувствую, что она должна быть способна перемещать эти окна.Любые предложения или советы приветствуются.