Vă mulțumim pentru susținere

Aducerea ferestrei spre front în C # utilizând Win32 API

Scriu o aplicație care trebuie să aducă fereastra unei aplicații externe în prim-plan și nu să fure neapărat focalizarea (există o setare pe care utilizatorul o poate comuta pentru a fura sau a nu fura focalizarea).

Care este cel mai bun mod de a face acest lucru folosind Win32 API? Am incercat SetForeground () dar totusi fura focul si nu functioneaza in mod constient.

Care este cel mai bun mod de a face acest lucru? Orice gânduri?

0
adăugat

5 răspunsuri

Ați încercat să utilizați SetWindowPos. Aceasta este funcția canonică pentru deplasarea, redimensionarea și setarea z-order în Windows. Există un pavilion SWP_NOACTIVATE pe care îl puteți utiliza. Uită-te la http://msdn.microsoft.com/en -US / bibliotecă / ms633545 (VS.85) .aspx . Nu am încercat asta pe o fereastră aparținând altui proces, dar probabil merită o încercare.

0
adăugat

Puteți încerca funcția BringWindowToTop să nu fure focalizarea. Nu am folosit-o, dar se pare că e ceea ce căutați.

0
adăugat

Care este diferența dintre SetForeGroundWindow, SetActiveWindow și BringWindowToTop? Se pare că toți fac același lucru.

Potrivit MSDN, SetForeGroundWindow va activa fereastra și va direcționa focusul spre ea. Acest lucru încearcă să funcționeze chiar și atunci când procesul dvs. este în fundal. SetActiveWindow face același lucru ca SetForeGroundWindow, dar nu face nimic dacă aplicația dvs. nu este cea mai frontală aplicație. În cele din urmă, BringWindowToTop aduce numai fereastra în partea de sus și nu schimbă focalizarea tastaturii.

0
adăugat

SetWindowPos + SWP_NOACTIVATE face lucrarea.

0
adăugat

Puteți utiliza FindWindow pentru a obține HWND-ul ferestrei, apoi utilizați funcția BringWindowToTop găsită în API-ul Win32.

0
adăugat