public void ActivateApplication()
        {
            var mainFormHandle = IntPtr.Zero;

            foreach (var process in Process.GetProcesses().Where(x => x.ProcessName.Contains("SiteManager")))
            {
                if (process.MainWindowHandle.ToInt32() == 0)
                {
                    continue;
                }
                mainFormHandle = process.MainWindowHandle;
                break;
            }
            if (mainFormHandle.ToInt32() == 0)
            {
                return;
            }
            WinAPIHelper.ShowWindow(mainFormHandle, WindowShowStyle.ShowMaximized);
            WinAPIHelper.MakeTopMost(mainFormHandle); WinAPIHelper.MakeNormal(mainFormHandle);
            uint lpdwProcessId;

            WinAPIHelper.AttachThreadInput(WinAPIHelper.GetCurrentThreadId(), WinAPIHelper.GetWindowThreadProcessId(WinAPIHelper.GetForegroundWindow(), out lpdwProcessId), true);
            WinAPIHelper.SetForegroundWindow(mainFormHandle);
            WinAPIHelper.AttachThreadInput(WinAPIHelper.GetCurrentThreadId(), WinAPIHelper.GetWindowThreadProcessId(WinAPIHelper.GetForegroundWindow(), out lpdwProcessId), false);
        }
        private void FormFileDescription_Shown(object sender, EventArgs e)
        {
            WinAPIHelper.ShowWindow(Handle, WindowShowStyle.ShowNormal);
            WinAPIHelper.MakeTopMost(Handle); WinAPIHelper.MakeNormal(Handle);
            uint lpdwProcessId;

            WinAPIHelper.AttachThreadInput(WinAPIHelper.GetCurrentThreadId(), WinAPIHelper.GetWindowThreadProcessId(WinAPIHelper.GetForegroundWindow(), out lpdwProcessId), true);
            WinAPIHelper.SetForegroundWindow(Handle);
            WinAPIHelper.AttachThreadInput(WinAPIHelper.GetCurrentThreadId(), WinAPIHelper.GetWindowThreadProcessId(WinAPIHelper.GetForegroundWindow(), out lpdwProcessId), false);
        }
示例#3
0
        protected override void OnStartup(StartupEventArgs e)
        {
            // Увеличение скорости запуска приложения
            Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.AboveNormal;

            // Если программа уже запущена, не нужно открывать ещё одну
            Process currentProcess = Process.GetCurrentProcess();

            Process[] processes = Process.GetProcessesByName(currentProcess.ProcessName);
            if (processes.Length > 1)
            {
                foreach (var process in processes)
                {
                    if (process.Id != currentProcess.Id)
                    {
                        WinAPIHelper.SetForegroundWindow(process.MainWindowHandle);
                    }
                }
                Environment.Exit(0);
            }
        }