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;
            }

  • 相关阅读:
    背景图片拉伸显示CSS
    可序列化对象和byte[]数组之间的互转
    简单web性能测试工具——ab命令(ApacheBench)
    测试人员必须掌握的linu常用命令
    robot framework 如何处理循环条件下面的变量自增
    robot framework 的关键字Continue For Loop 用法
    robot framework 的AutoItLibrary常用关键字
    robot framework 关键字Switch Browser和Select Window的区别
    robot framework 接口测试 http协议post请求json格式
    robot framework 怎么验证搜索无记录,页面元素不存在
  • 原文地址:https://www.cnblogs.com/guodongsky/p/2995249.html
Copyright © 2011-2022 走看看