Witam,
Mam ukryte okno, chcę je przywołać na pierwszy plan i uaktywnić. Próbowałem mnóstwa wygooglowanych funkcji, nic nie działa:
- SetForegroundWindow co prawda podświetla mi je na pasku i ustawia nad innymi, ale okno nadal jest nieaktywne
- SetFocus, SetActiveWindow, ShowWindow(handle, SW_SHOW) nie działają (również wariant SW_SHOWNORMAL)
- SendMessage(Handle, WM_ACTIVATE, 1, 0) nie działa.
Próbowałem i na uchwytach okna, i aplikacji - nic. Coś dziwnego działo się przy poprzedzeniu SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW) jakimiś innymi funkcjami - okno aktywowało się na chwilę i gasło, ale nie jestem w stanie teraz odtworzyć tego zachowania.
Dodatkowo z nieznanych mi przyczyn nie działa też zdarzenie OnDeactivate, w którym próbowałem to okno ukryć. Program nie robi jeszcze praktycznie nic, używa jednego DLLa i komunikatu WM_USER + 101. W kodzie projektu ustawiam Application.ShowMainForm := false, przed wyświetleniem okna zmieniam na true.
Czy ktoś może zna jakieś inne wyjaśnienie takiego zachowania niż "Windows"? Jeśli tak, to bardzo chętnie je poznam ;) Dodam, że chodzi o Delphi 2009 na Windowsie 2000.