0

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# コードに情報を送信するにはどうすればよいですか?

ありがとう

4

2 に答える 2