Pentru a muta o fereastră în prim-plan


Versiune Text: 1.0

În general, nu se recomandă să încalce regulile de funcționare a interfeței cu utilizatorul, Microsoft prescris. De obicei, o fereastră, sări de nicăieri, enervant numai utilizatorului. Cu toate acestea, poate fi necesar pentru a realiza exact acest comportament, în unele aplicații. Luați în considerare mai multe moduri de a realiza dorit.







NOTĂ
Microsoft a fost în mod constant „conectarea găuri în apărarea sa,“ și tot mai multe moduri de a refuza eliberarea de noi versiuni de Windows bine-cunoscute.

Această metodă implică utilizarea funcției SwitchToThisWindow fără acte, a căror divulgare a dat Ashot Oganesyan (detalii pot fi găsite aici). Această funcție are doi parametri: primul - mâner fereastră, iar al doilea - la TRUE sau FALSE, în funcție de care aveți nevoie pentru a restabili o fereastră minimizată.







Următoarele două metode sunt descrise pe site-ul lui Bob Moore, unul dintre MVP Microsoft.

Parametrul FOREGROUNDLOCKTIMEOUT poate fi schimbat în mod programatic, acest lucru este funcția SystemParametersInfo. Acest lucru înseamnă că putem seta intervalul la zero, provoca SetForegroundWindow, și apoi a restabili valoarea inițială a intervalului. Aici este un fragment de cod care execută planul său.

Dacă nu doriți să (sau dacă utilizați antet versiune expirată), puteți descrie constantele necesare direct în program se numără codul macro următorul:

Conform documentației, SetForegroundWindow funcționează așa cum ne-o dorim, dar dacă îl numesc acest proces este activ. Și acest proces este activ, al cărui flux procesează date introduse de utilizator. Se pare că procesul nostru poate „pretinde a fi“ activ, conectați fluxul dvs. pentru a procesa datele introduse de utilizator. Acest lucru se face prin funcția AttachThreadInput. După apel SetForegroundWindow poate fi deconectat de la fluxul de altul, folosind aceeași funcție (dar care trece FALSE ca al treilea parametru, nu este adevărat).

Punerea în aplicare a acestei idei este după cum urmează.