using Microsoft.VisualBasic.ApplicationServices;
 
  static void Main(string[] args)
 
  {
 
  App myApp = new App();
 
  myApp.Run(args);
 
  }
 
  class App : WindowsFormsApplicationBase
 
  {
 
  public App()
 
  {
 
  // 设置单例模式
 
  this.IsSingleInstance = true;
 
  // 设置可用于XP窗口样式
 
  this.EnableVisualStyles = true;
 
  // 窗口关闭时的操作
 
  this.ShutdownStyle = ShutdownMode.AfterMainFormCloses;
 
  }
 
  /// <summary>
 
  /// 重写OnCreateMainForm()函数
 
  /// </summary>
 
  protected override void OnCreateMainForm()
 
  {
 
  this.MainForm = new FormMain();
 
  }
 
  }
 
  }我这里已经实现了只能运行一个实例并激活,但是不知道怎么传递参数过去。。

解决方案 »

  1.   

    就是说第一次运行这个程序就是普通程序没问题
    第二次运行这个程序的时候我想要的是把第一次那个实例激活而不是再运行这个程序
    而我第二次运行的时候可能是这样调用的  test.exe TwoRun
    也就是说要把这个TwoRun这个参数传递到第一个实例并且让他作出反应
    比如说把这个参数弹出来什么的
      

  2.   

    运行一个实例用你的方式无法进行数据传递,你应该使用命名Mutex对实例数进行控制。
    数据传递这块你可以看下进程间的IPC或者管道通信,这块不太熟,你最好查一下