Consider this code:
// Code in italics is wrong
foregroundThreadId = ::GetWindowThreadProcessId(::GetForegroundWindow(), 0);
myThreadId = GetCurrentThreadId();
if (foregroundThreadId != myThreadId)
{
AttachThreadInput(foregroundThreadId, myThreadId, TRUE);
BringWindowToTop(myWindowHandle);
If you try to ...