C# 双击桌面图标时判断程序是否在运行,如果程序在运行弹出窗体

如题,C#实现双击桌面图标时判断程序是否在运行,如果程序在运行弹出窗体... 如题,C#实现 双击桌面图标时判断程序是否在运行,如果程序在运行弹出窗体 展开
 我来答
逗比一坨坨
2014-08-02 · TA获得超过203个赞
知道答主
回答量:95
采纳率:0%
帮助的人:94.7万
展开全部

修改启动文件Program.cs

static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Process instance = RunningInstance();
            if (instance == null)
            {
                //没有实例在运行
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            else
            {
                //已经有一个实例在运行
                HandleRunningInstance(instance);
            }
        }

         private static Process RunningInstance()
         {
             Process current = Process.GetCurrentProcess();
             Process[] processes = Process.GetProcessesByName(current.ProcessName);
             //遍历与当前进程名称相同的进程列表  
             foreach (Process process in processes)
             {
                 //如果实例已经存在则忽略当前进程  
                 if (process.Id != current.Id)
                 {
                     //保证要打开的进程同已经存在的进程来自同一文件路径
                     if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
                     {
                         //返回已经存在的进程
                         return process;
                         
                     }
                 }
             }
             return null;
         }

         public static void HandleRunningInstance(Process instance)
         {
             ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);
             SetForegroundWindow(instance.MainWindowHandle);
         }
         [DllImport("User32.dll")]
         private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
         [DllImport("User32.dll")]
         private static extern bool SetForegroundWindow(IntPtr hWnd);
         private const int WS_SHOWNORMAL = 1;
    }
追问
非常感谢!不过我记得有更好的写法的,我以前在csdn还是在博客园看到过的,那帖子介绍了四种可实现这种效果的写法,但一时找不回来
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式