U
Hi DocShoe,
vielen Dank für Deinen Beitrag!
Leider funktioniert das bei mir nicht. Der Tastaturfocus ist/bleibt woanders. Das kann der Desktop sein, oder ein anderes unbeteiligtes Programm.
Wenn ich meinen Code so ergänze
DWORD dwForegroundThread = ::GetWindowThreadProcessId(::GetForegroundWindow(), NULL);
DWORD dwCurrentThread = ::GetCurrentThreadId();
if (dwForegroundThread != dwCurrentThread) {
if (AttachThreadInput(dwForegroundThread, dwCurrentThread, TRUE)) {
this->SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
this->SetWindowPos(&CWnd::wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
COXMessageBoxDialog dlgMessageBox(this, _T("Einen Moment bitte"), _T("DTPdfQuery"), MB_NO_SOUND);
dlgMessageBox.SetTimeout(1, FALSE, TRUE);
dlgMessageBox.DoModal();
AttachThreadInput(dwForegroundThread, dwCurrentThread, FALSE);
}
}
dann funktioniert das mit der Übernahme des Tastaturfocus. Die MessageBox hat eine Lebenszeit von 1ms und erscheint nicht (bemerkbar) auf dem Bildschirm. Das habe ich schon einige Wochen auf unsere diverse TerminalServer2019 am laufen. Nur diese Vorgehensweise gefällt mir nicht so gut.
Nochmals danke für Deine Hilfe
-Uwe