mikebai.com

  • Home
  • dev
  • DotNET
  • M365
  • 搞笑
  • 杂七杂八
  • FocusDict
個人BLOG
it developer
  1. Main page
  2. DotNET
  3. Main content

如何激活一个已存在的进程

2009-10-12 112hotness 0likes 0comments

我想在   .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。     
    
    
 

Tag: Nothing
Last updated:2009-10-12

mikebai

This person is a lazy dog and has left nothing

Like
< Last article
Next article >

COPYRIGHT © 2025 mikebai.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang