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);
        }
Exemplo n.º 3
0
 public void Disconnect()
 {
     if (ExcelObject != null)
     {
         foreach (Workbook workbook in ExcelObject.Workbooks)
         {
             workbook.Close();
         }
         uint processId;
         WinAPIHelper.GetWindowThreadProcessId(new IntPtr(ExcelObject.Hwnd), out processId);
         Process.GetProcessById((int)processId).Kill();
     }
     Utilities.ReleaseComObject(ExcelObject);
     GC.Collect();
 }
Exemplo n.º 4
0
 protected void Close()
 {
     try
     {
         _powerPointObject.Quit();
         uint lpdwProcessId;
         WinAPIHelper.GetWindowThreadProcessId(WindowHandle, out lpdwProcessId);
         var powerPointProcessId = (int)lpdwProcessId;
         Process.GetProcessById(powerPointProcessId).CloseMainWindow();
     }
     catch { }
     finally
     {
         try
         {
             Process.GetProcessesByName("POWERPNT").ToList().ForEach(p => p.Kill());
         }
         catch { }
     }
 }
Exemplo n.º 5
0
        private void OnCheckProcessDoWork(object sender, DoWorkEventArgs e)
        {
            _checkTimer.Stop();
            _currentIteration = 0;
            _newStatus        = BarVsProcessStatus.OnTop;

            if (Process.GetProcesses()
                .Any(process => _processConfiguration
                     .Any(processConfiguration => processConfiguration.Behaviour == ExternalProcessBehaviour.HideIfProcessIsRunning &&
                          String.Compare(processConfiguration.Name, process.ProcessName, StringComparison.OrdinalIgnoreCase) == 0)))
            {
                _newStatus = BarVsProcessStatus.Hidden;
                _checkProcess.ReportProgress(-1);
                return;
            }

            do
            {
                uint processId;
                var  foregroundWindow = WinAPIHelper.GetForegroundWindow();

                WinAPIHelper.GetWindowThreadProcessId(foregroundWindow, out processId);
                var p           = Process.GetProcessById((int)processId);
                var processName = p.ProcessName.ToLower();

                if (processName == "idle")
                {
                    continue;                                        // Ignore Idle process
                }
                _newStatus = BarVsProcessStatus.OnTop;

                foreach (var processConfiguration in _processConfiguration.Where(configuration => new[] {
                    ExternalProcessBehaviour.HideIfIsActive,
                    ExternalProcessBehaviour.HideIfIsActiveAndMaximized,
                    ExternalProcessBehaviour.SetNotOnTopIfIsActive,
                    ExternalProcessBehaviour.HideIfTitlebarMatches
                }
                                                                                 .Contains(configuration.Behaviour)))
                {
                    try
                    {
                        if (processConfiguration.Behaviour == ExternalProcessBehaviour.HideIfTitlebarMatches)
                        {
                            if (!p.MainWindowTitle.Contains(processConfiguration.Name))
                            {
                                continue;
                            }
                            _newStatus = BarVsProcessStatus.Hidden;
                            break;
                        }

                        if (String.Compare(processName, processConfiguration.Name, StringComparison.OrdinalIgnoreCase) != 0)
                        {
                            continue;
                        }

                        switch (processConfiguration.Behaviour)
                        {
                        case ExternalProcessBehaviour.HideIfIsActive:
                            _newStatus = BarVsProcessStatus.Hidden;
                            break;

                        case ExternalProcessBehaviour.HideIfIsActiveAndMaximized:
                            if (IsMaximized(p))
                            {
                                _newStatus = BarVsProcessStatus.Hidden;
                            }
                            break;

                        case ExternalProcessBehaviour.SetNotOnTopIfIsActive:
                            _newStatus = BarVsProcessStatus.NotOnTop;
                            break;
                        }
                    }
                    catch { }
                }

                if (_newStatus != _lastStatus)
                {
                    _checkProcess.ReportProgress(-1);
                    return;
                }
                Thread.Sleep(Delay);
            }while (_currentIteration++ < Iterations);
        }