При прохождении fAltTab=FALSE
вы фактически эмулируете Alt + Esc. Таким образом, вы можете изменить это изменение z-порядка с помощью SetWindowPos
и его hWndInsertAfter
после вызова SwitchToThisWindow
, но тогда вы вернетесь в безобразную хакерскую страну ИМХО.
Вопрос в том, нужен ли вам фокус клавиатуры?
Позвольте мне предложить другую альтернативу:
- Если ваше окно свернуто, восстановите его
- Установите ваше окно, чтобы быть самым верхним, когда ваше окно активировано, удалите стиль снова.
- Позвоните
SetForegroundWindow
, чтобы высветить кнопку панели задач (или FlashWindowEx
)
Это должно избежать сценария, когда пользователь печатает, и в конечном итоге выполняет какое-то действие в вашем пользовательском интерфейсе, даже не глядя на экран.
Изменить:
HWND hwndFgnd=GetForegroundWindow();
SetWindowPos(hwnd,hwndFgnd,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE);
SetWindowPos(hwndFgnd,hwnd,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
.., вероятно, будет работать, если вы не хотите устанавливать самый верхний бит в любой точке (даже если ваше окно находится в верхней части z-порядка, вы все равно не можете легально получить фокус с помощью SetForegroundWindow
)