За да преместите прозорец на преден план


Текст версия: 1.0

Като цяло, не се препоръчва да се нарушават правилата на работа на потребителския интерфейс на Microsoft е предписано. Обикновено, един прозорец, да изскочи от нищото, само на потребителя досадно. Въпреки това, може да е необходимо да се постигне точно това поведение в някои приложения. Помислете за няколко начина за постигане на желаното.







ЗАБЕЛЕЖКА
Microsoft е постоянно "включване дупки в защитата си," и все повече и повече добре познат начини да отричат ​​освобождаването на нови версии на Windows.

Този метод включва използването на неописана функция SwitchToThisWindow, разкритието от който се получава Ашот Oganesyan (информация може да се намери тук). Тази функция може да отнеме два параметъра: първият - дръжка прозорец, а втората - на истина или лъжа, в зависимост от това дали се нуждаете от възстановяване минимизиран прозорец.







Следните два метода са описани на интернет страницата на Боб Мур, един от най-полезен играч на Microsoft.

параметър FOREGROUNDLOCKTIMEOUT може да се променя по програмен път, това е функция SystemParametersInfo. Това означава, че ние можем да настроите интервала на нула, предизвика SetForegroundWindow, и след това да възстановите първоначалната стойност на интервала. Ето фрагмент от кода, който изпълнява плана си.

Ако не искате да (или ако използвате остаряла версия хедър), можете да се опише необходимите константи директно в програмата включва следната макро код:

Според документацията, на SetForegroundWindow работи като ние искаме, но ако го наричат ​​този процес е активен. И този процес е активен, чийто поток обработва данни от потребителя. Оказва се, че нашият процес може да "се представят за" активна, свържете своя поток за обработка на данни от потребителя. Това се извършва чрез функция AttachThreadInput. След SetForegroundWindow повикване може да бъде изключен от потока от друг, като се използва една и съща функция (но минава FALSE като трети параметър, не е вярно).

Изпълнението на тази идея е, както следва.