我试图重写user32.dll
中外部函数的行为,因为我不希望某个窗口出现。
我要做的是:
[DllImport("user32.dll")]
public extern override IntPtr GetSystemMenu(IntPtr hMenu, bool bRevert)
{
return new IntPtr();
}
但这不起作用,因为我犯了以下错误:
…找不到可重写的合适方法
和
…不能是extern并声明body
有什么方法可以模拟我正在做的事情吗?
最佳答案
如果调用GetSystemMenu
的源代码在您的控制范围内,那么您可以提供另一个GetSystemMenu
选项,该选项在大多数情况下委托给真正的源代码,但在您的特殊情况下会做一些不同的事情。
如果调用GetSystemMenu
的源代码超出您的控制范围,则需要使用钩子。在这种情况下,您需要修改user32.GetSystemMenu
的行为方式,这完全超出了您的代码库。