zoukankan      html  css  js  c++  java
  • 检测某个程序是否已经运行,如果运行就切换到该程序界面

    检测某个程序是否已经运行,如果运行就切换到该程序界面。
    以下代码还存在一个问题,程序最小化之后就不能恢复了

    /// 该函数设置由不同线程产生的窗口的显示状态  
            /// </summary>  
            /// <param name="hWnd">窗口句柄</param>  
            /// <param name="cmdShow">指定窗口如何显示。查看允许值列表,请查阅ShowWlndow函数的说明部分</param>  
            /// <returns>如果函数原来可见,返回值为非零;如果函数原来被隐藏,返回值为零</returns>  
            [DllImport("User32.dll")]
            private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
            /// <summary>  
            ///  该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。  
            ///  系统给创建前台窗口的线程分配的权限稍高于其他线程。   
            /// </summary>  
            /// <param name="hWnd">将被激活并被调入前台的窗口句柄</param>  
            /// <returns>如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零</returns>  
            [DllImport("User32.dll")]
            private static extern bool SetForegroundWindow(IntPtr hWnd);
            /// 窗口是否已最小化        
           [System.Runtime.InteropServices.DllImport("User32.dll")]   
            private static extern bool IsIconic(IntPtr hWnd);
           [System.Runtime.InteropServices.DllImport("User32.dll")]
           private static extern bool OpenIcon(IntPtr hWnd);

           //相关常量        
            private const int SW_HIDE = 0;             //隐藏窗口,活动状态给另一个窗口       
            private const int SW_SHOWNORMAL = 1;       //用原来的大小和位置显示一个窗口,同时令其进入活动状态  
            private const int SW_SHOWMINIMIZED = 2;    //最小化窗口,并将其激活       
            private const int SW_SHOWMAXIMIZED = 3;    //最大化窗口,并将其激活      
            private const int SW_SHOWNOACTIVATE = 4;   //用最近的大小和位置显示一个窗口,同时不改变活动窗口      
            private const int SW_RESTORE = 9;          //用原来的大小和位置显示一个窗口,同时令其进入活动状态          
            private const int SW_SHOWDEFAULT = 10;     //根据默认 创建窗口时的样式 来显示  
            private static void HandleRunningInstance(Process instance)
            {
                IntPtr hWnd = instance.MainWindowHandle;
                bool isIcon = IsIconic(hWnd);             // 窗口是否已最小化       
                if (isIcon)           
                {             
                    // 还原窗口           
                    ShowWindowAsync(hWnd, SW_RESTORE);  
                }          
                else        
                {
                    OpenIcon(hWnd);
                    //如果期望窗口显示为Normal模式,可先做如下设置      
                    ShowWindowAsync(hWnd, 10);      
                    // 将窗口设为前台窗口             
                    SetForegroundWindow(hWnd);       
                }
            }

            private void btn_Click(object sender, EventArgs e)
            {
                Process process = IsProcessStarted("F");
                if (process != null)
                {
                    HandleRunningInstance(process);
                   // System.Environment.Exit(1);
                }
                else
                {
                    string tempPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "F.exe";
                    if (File.Exists(tempPath))
                    {
                        System.Diagnostics.Process.Start(tempPath);
                    }
                    else
                    {
                        MessageBox.Show("未找到程序", "提示信息");
                    }
                }
            }

            private Process IsProcessStarted(string processName)
            {
                Process[] temp = Process.GetProcessesByName(processName);
                if (temp.Length > 0)
                {
                    return temp[0];
                }
                else
                    return null;
            }

  • 相关阅读:
    C. Shaass and Lights 解析(思維、組合)
    D. Binary String To Subsequences(队列)(贪心)
    CodeForces 1384B2. Koa and the Beach (Hard Version)(贪心)
    CodeForces 1384B1. Koa and the Beach (Easy Version)(搜索)
    CodeForces 1384C. String Transformation 1(贪心)(并查集)
    CodeForces 1384A. Common Prefixes
    POJ-2516 Minimum Cost(最小费用最大流)
    POJ3261-Milk Patterns(后缀数组)
    HDU-1300 Pearls(斜率DP)
    HDU-4528 小明系列故事-捉迷藏(BFS)
  • 原文地址:https://www.cnblogs.com/guodongsky/p/2995249.html
Copyright © 2011-2022 走看看