Как выдвинуть другое окно, которое не принадлежит программе - PullRequest
0 голосов
/ 08 октября 2010

Я действительно изо всех сил пытаюсь найти способ выдвинуть другое окно программы.

Например, я использую FindWindow, чтобы найти дескриптор Блокнота.Затем я пытаюсь переместить окно вперед, используя SetWindowPos (hWnd, 0,0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);

Но это просто не работает !!ShowWindow тоже не умеет!

Не могли бы вы помочь и, возможно, показать мне фрагмент кода?

Спасибо

1 Ответ

0 голосов
/ 08 октября 2010

Не знаю, если это то же самое или нет, но в какой-то момент в разработке Windows Microsoft добавила слишком умный наполовину «всплывающий» код, который бы помешал программе, у которой нет фокуса, сворачивая свои окна ... вместо этого запись окна в панели программ будет просто мигать. Возможно, есть подобная логика, препятствующая тому, чтобы не передняя программа выдвигала свое окно вперед?

В любом случае, вот некоторый код, который можно попробовать, который может или не может помочь:

 // Check to see if we are the foreground thread
 DWORD foregroundThreadID = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
 DWORD ourThreadID = GetCurrentThreadId();

 // If not, attach our thread's 'input' to the foreground thread's
 if (foregroundThreadID != ourThreadID) AttachThreadInput(foregroundThreadID, ourThreadID, TRUE);

 // Bring our window to the foreground
 SetForegroundWindow(hWnd);

 // If we attached our thread, detach it now
 if (foregroundThreadID != ourThreadID) AttachThreadInput(foregroundThreadID, ourThreadID, FALSE);

 // Force our window to redraw
 InvalidateRect(hWnd, NULL, TRUE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...