Ustawienie Foreground dla obcego procesu

0

Witam,

Piszę aplikacje i natknąłem się na pewien problem. Nie potrafię wymusić procesu aby wszedł na foreground i ZOSTAŁ tam, niezależnie od tego, co robię.

Przykład:
Mam odpalonego FireFox'a. Proces, który chciałbym mieć cały czas na foreground jest windowsowy kalkulator. Udało mi się ustawić program tak, że po jego uruchomieniu ustawia ( SetForegroundWindow() ) kalkulator na pierwszy plan, ale wystarczy, że kliknę z powrotem na FireFox'a, to kalkulator ,,chowa się" pod FireFox'a.

Efekt o który mi chodzi, wygląda podobnie do tego, jaki stosuje Skype z kamerką. Kamerkę zawsze można mieć na szczycie i nic nie jest w stanie jej zakryć.

Pozdrawiam

1

Czyli chcesz mieć okno jakiegoś programu always on top?

0

Tak, chcialbym miec mozliwosc ustawienia ,,always on top" wybranego procesu.

0

Dzięki wpisowi ,,always on top" udało mi się poskładać rozwiązanie ze znalezionych fragmentów:

public class ProcessManager
{
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, uint windowStyle);

        [DllImport("user32.dll")]
        private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

       public ProcessManager()
        {
            string processName = "calc";
            SearchProcessAndModifyState(processName);
        }

        void SearchProcessAndModifyState(string targetProcessName)
        {
            Process specifiedProcess = null;
            Process[] processes = Process.GetProcesses();
            for (int i = 0; i < processes.Length; i++)
            {
                Process process = processes[i];
                if (process.ProcessName == targetProcessName)
                {
                    specifiedProcess = process;
                    break;
                }
            }
            if (specifiedProcess != null)
            {
                ProcessManager.ShowWindow(specifiedProcess.MainWindowHandle, 1u);
                ProcessManager.SetWindowPos(specifiedProcess.MainWindowHandle, new IntPtr(-1), 0, 0, 0, 0, 3u);
            }
        }
    }

Dzięki za wskazówkę ;3 Nie miałem pojęcia jak szukać czegoś na ten temat (foreground endless loop był jednym z ciekawszych wpisów na google;D).

1 użytkowników online, w tym zalogowanych: 0, gości: 1