我正在使用easyhook,退出我的应用程序后,被钩住的应用程序崩溃了。我知道它发生在哪里,但不知道如何解决它。我正在连接 DrawText。我什么都不做:
int DrawText_Hooked(IntPtr hdc, [In, Out, MarshalAs(UnmanagedType.LPTStr)] string lpString, int cchText, [In, Out, MarshalAs(UnmanagedType.Struct)] ref RECT lprc, uint dwDTFormat, [In, Out, MarshalAs(UnmanagedType.Struct)] ref DRAWTEXTPARAMS dparams)
{
//Interface.Read(hdc, lpString, cchText, dwDTFormat);
return DrawTextExW(hdc, lpString, cchText, ref lprc, dwDTFormat, ref dparams);
}
但是,如果我取消注释Interface.Read(...)
它会在我退出我的 c# 程序时崩溃我的钩子应用程序(否则它会完美运行)。
该函数在我的 c# 代码中,看起来是这样的:
public class interfaceA : MarshalByRefObject
{
public void ReportException(Exception InInfo)
{
}
public void Ping()
{
}
public void Read(IntPtr hdc, string lpString, int cchText, uint dwDTFormat)
{
Console.WriteLine(lpString);
}
}
我能做些什么来防止这个外部应用程序崩溃?或者如何在不出现此问题的情况下将信息从我的 dll 发送到 c# 代码?
谢谢