WEB开发网
开发学院软件开发VC SetForegroundWindow 及类保护 阅读

SetForegroundWindow 及类保护

 2006-07-20 11:43:51 来源:WEB开发网   
核心提示: 我想在 .NET 框架中用 C# 编写一个程序,该程序要激活另一个窗口,SetForegroundWindow 及类保护(3),在 Windows/MFC 中我可以调用 SetActiveWindow 函数来实现,在.NET 框架中我该怎么做呢? John McCormick你可以调用 F

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

我怎样才能在编译时阻止其它的类从我的 C++ 类派生? 例如,我有一个类: class MyClass { };如果有人试图像这样申明一个类class Derived : public MyClass { };我希望此时编译器抛出一个错误,可以实现吗?

上一页  1 2 3 4  下一页

Tags:SetForegroundWindow 保护

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接