出于测试目的,我计划将一个小应用程序放在一起,该应用程序将监听来自应用程序的特定事件并在此时与其进行交互.
鉴于我们处于测试过程的某个阶段,改变应用程序代码是不可能的,从我的观点来看,理想的是从应用程序中监听调试跟踪,有点像debugview,并且响应那个.
谁能提供关于如何最好地解决这个问题的指导?
我发现这样做的方式是使用Microsoft 的Mdbg工具让我从运行时访问核心调试信息.我正在使用的代码的基本形状如下所示:
MDbgEngine mg; MDbgProcess mgProcess; try { mg = new MDbgEngine(); mgProcess = mg.Attach(debugProcess.Id); } catch (Exception ed) { Console.WriteLine("Exception attaching to process " + debugProcess.Id ); throw (ed); } mgProcess.CorProcess.EnableLogMessages(true); mgProcess.CorProcess.OnLogMessage += new LogMessageEventHandler(HandleLogMessage); mg.Options.StopOnLogMessage = true; mgProcess.Go().WaitOne(); bool running = true; Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); while (running) { try { running =mgProcess.IsAlive; mgProcess.Go().WaitOne(); } catch { running = false; } }
它似乎对我所需要的任何速度都足够好,也许它将为发现自己在同一条船上的任何人提供一个有用的模板.