SetForegroundWindow 及类保护
2006-07-20 11:43:51 来源:WEB开发网我想在 .NET 框架中用 C# 编写一个程序,该程序要激活另一个窗口。在 Windows/MFC 中我可以调用 SetActiveWindow 函数来实现。在.NET 框架中我该怎么做呢?
John McCormick
你可以调用 Form.Activate 来激活你自己的窗体,但惊奇的是,在 .NET Framework 中没有函数可以激活属于另外一个进程或程序的窗体。不要害怕,任何时候,只要.NET Framework无法满足你的需要,你通常都可以使用托管(interop)机制直接与Windows 交互。目前情况下,你需要的函数是 SetForegroundWindow。它带唯一的参数——你想激活的窗 口的句柄(HWND). using System.Runtime.InteropServices;
在你的代码中使用此托管申明,并且假设你已经拥有了你希望激活的窗口的句柄,你要做的是调用 SetForegroundWindow:
public class MyClass {
[DllImport("user32.dll")]
public static extern void
SetForegroundWindow(IntPtr hwnd);
}IntPtr hwnd = // get HWND
你怎样获得窗口句柄呢?根据你的程序的工作方式,有许多方法可以做到,但最通用的一种方法是调用 FindWindow,你可以用这个 API 函数由窗口的标题或类名获得窗口句柄,在此你又要在 C# 中用到托管:
SetForegroundWindow(hwnd);public class MyClass {
classname 是 Window 注册的窗口类的名字,title 是窗口标题。这些参数只能有一个为 NULL,不能全为 NULL。
[DllImport("user32.dll")]
public static extern IntPtr
FindWindow(String classname, String title);
}
我怎样才能在编译时阻止其它的类从我的 C++ 类派生? 例如,我有一个类: class MyClass { };
如果有人试图像这样申明一个类class Derived : public MyClass { };
我希望此时编译器抛出一个错误,可以实现吗?
Tags:SetForegroundWindow 保护
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接