Cum să obțineți un mâner în fereastra aplicației consolă

Nu este de multe ori, dar uneori poate fi, totuși necesară pentru a obține un mâner în fereastra aplicației consolă. API Windows nu oferă nici o funcție specială pentru a efectua această sarcină, dar puteți găsi soluții pentru ao rezolva.

Ideea de bază a acestei metode este descrisă în Q124103 articol din Baza de cunoștințe Microsoft. Este de a înlocui numele consolei la un șir unic de caractere pentru a căuta mânerul ferestrei prin FindWindow (), și apoi a reveni fereastra anterior. Există, de asemenea, codul de obținere șir unic bazat pe o combinație de ora curentă și ID-ul de proces.

Codul de mai jos folosește o metodă ușor diferită de a produce un șir unic pentru numele consolei, care, în opinia mea, în nici un fel inferioare metodei de la Microsoft, deoarece foloseste GUID ca un șir de caractere - sunt garantate un identificator unic. Puteți utiliza oricare dintre aceste opțiuni, precum și de a dezvolta propria metodologie.

Ideea din spatele acestei metode este de a lista toate ferestrele deschise, folosind EnumWindows. și apoi alegeți fereastra creată de firul curent - acesta va fi o fereastră de consolă. Desigur, pentru transferul de mult mai bine s-ar potrivi funcția EnumThreadWindows. dar din anumite motive ea refuză să listeze fereastra consolei.

NOTĂ
Desigur, această metodă va funcționa cu condiția ca cererea dumneavoastră consola nu creează ferestre suplimentare de nivel superior grafic (un caz rar, dar uneori se întâmplă). În cazul în care alte ferestre sunt încă create, puteți introduce condiții suplimentare care verifică otsekut toate ferestrele care nu sunt necesare, cu excepția consolei. Ce tip de testare poate fi necesară, în funcție de aplicație specifică. O altă opțiune - utilizează metoda descrisă în secțiunea anterioară.