我现在在做一个C#程序,利用Mutex检测程序是否被多开了,如果多开就要把之前已经开启的程序show出来,然后关闭自己。程序的显示状态有2种,1是程序任务栏(开始按钮那一行)有图标,但不是顶层窗口,那么就需要置顶。2是,程序被最小化到托盘,也就是被hiden掉了,那么需要让它show出来。如何做到这2种处理方式呢,需要用到进程间通信么,还是有更简单的方法。请赐教。

解决方案 »

  1.   

    http://files.cnblogs.com/dataexcel/yufb.rar
    7年前vb.net写的垃圾东东。(最初是vb写的)应该可以反编译出c#代码
    里面有你要的。
    介绍一下主要功能。有启动项理管理,进程管理。进程的暂停还是比较好用的。
    还有一键关机。还有服务管理,窗口管理,有一键隐藏窗口。里面有把隐藏窗口显示出来的。
    代码很烂。没有啥条理性。看看功能就可以。
      

  2.   

    进程间通信,或者两个软件都打开一个tcp端口,一个服务端,一个客户端,
    软件默认打开服务端,如果已经启动,打开服务端失败,那么说明软件已经存在,通过tcp客户端给服务端发送一条信息,然后退出.原来的软件收到信息后就自动显示.
    当然,这只是一个思路.进程通信可以采取其它更简便的方法.或者干脆监视配置文件,
    增加一个变量a,默认打开为true.第二个进程打开的时候,遍历发现如果有相同进程,则修改为false并退出.
    同时软件监视文件修改后的值等.
      

  3.   

                    Form fm=new Form();                
                    fm.Hide();
    ///////////////////////////////////////
                    fm.Show();
                    fm.Activate();
    ???
      

  4.   


    没这么严重
    其实只要找到窗口句柄就行了
    FindWindow
      

  5.   

    Setup1.msi
    你把这个名字改一下吧。360以名字认是不是病毒的。
    360依然是这么垃圾。
      

  6.   


    求帮我反编译一下,有代码就好了,这个exe我也不知道怎么编译,谢谢了。
      

  7.   

    好吧,可以利用COPYDATA这个消息传递,还是很好用的