为什么我不能在VS.NET调试器中单步执行剪贴板代码?
时间:2020-03-05 18:57:55 来源:igfitidea点击:
理想情况下,阅读器已将本机C ++程序升级到Visual Studio 2008,该程序包含一个OpenClipboard()块。为什么不从OpenClipboard()成功获取返回代码并逐步浏览代码后尝试设置断点。根据Internet的说法,它可以在系统上运行,但当然不能在我的系统上运行,谢谢尝试。
解决方案
回答
我从来没有研究过,但是很容易猜到:
- 剪贴板是共享资源
- 在任何给定时间点,每个桌面只能有一个应用"拥有"剪贴板
- 应用拥有它(在调用OpenClipboard()之后)
- VS想要它(可能是因为它是一个编辑器)
- 当应用程序在断点处停止时,没有任何等待将找到应用程序不拥有的剪贴板。
- 随之而来的是狂欢!
回答
不要浪费时间怀疑它是.NET。有时,Visual Studio.NET和.NET运行时之间的关系就像ActiveX和ActiveDirectory一样,它告诉我们涉及哪个市场营销人员,而Visual Studio.NET实际上具有许多调试器。本机,脚本或者托管,仅后者与.NET确实相关。我们将使用本机调试器。
如果要调查,建议使用Microsoft Detours钩挂OpenClipboard,然后在调试器中运行应用程序。我们将能够看到谁在争夺剪贴板。