问题是这样的,我做了一个帮助文档,我用Process通过程序打开这个帮助文件,不过我想在打开之前先判断当前进程中是否已经存在该帮助文件的进程,如果存在则激活该进程,否则再开启一个新的进程,请问如何实现?

解决方案 »

  1.   

    foreach(作些工作)
    if 存在,激活
    else 新开启
      

  2.   

    我想在 .NET 框架中用 C# 编写一个程序,该程序要激活另一个窗口。在 Windows/MFC 中我可以调用 SetActiveWindow 函数来实现。在.NET 框架中我该怎么做呢? 
    John McCormick  你可以调用 Form.Activate 来激活你自己的窗体,但惊奇的是,在 .NET Framework 中没有函数可以激活属于另外一个进程或程序的窗体。不要害怕,任何时候,只要.NET Framework无法满足你的需要,你通常都可以使用托管(interop)机制直接与Windows 交互。目前情况下,你需要的函数是 SetForegroundWindow。它带唯一的参数——你想激活的窗 口的句柄(HWND). using System.Runtime.InteropServices;
    public class MyClass {
      [DllImport("user32.dll")]
      public static extern void 
        SetForegroundWindow(IntPtr hwnd);
    }在你的代码中使用此托管申明,并且假设你已经拥有了你希望激活的窗口的句柄,你要做的是调用 SetForegroundWindow: IntPtr hwnd = // get HWND
    SetForegroundWindow(hwnd);  你怎样获得窗口句柄呢?根据你的程序的工作方式,有许多方法可以做到,但最通用的一种方法是调用 FindWindow,你可以用这个 API 函数由窗口的标题或类名获得窗口句柄,在此你又要在 C# 中用到托管: public class MyClass {
      [DllImport("user32.dll")]
      public static extern IntPtr
        FindWindow(String classname, String title);
    }classname 是 Window 注册的窗口类的名字,title 是窗口标题。这些参数只能有一个为 NULL,不能全为 NULL。