如果我用这个...
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
...要在我的 C# .Net4.5控制台应用程序中获取控制台实例并将其分配给一个变量(我在调用 user32 的MessageBox()
方法时作为 hWnd 参数传递),当我需要调用 kernel32 的CloseHandle()
方法时'完成了非托管变量?
当我尝试这个时,我得到一个 SEHException,我的谷歌搜索似乎表明它与调试模式和早期版本的 .NET 有关。
问题 1 - 我应该使用 CloseHandle,还是留下它让控制台资源自行解决?
问题 2 - SEHException 是完全不相关的,还是因为我试图在它仍然实例化时关闭控制台?
边注
为“菜鸟问题”道歉;我对非托管代码的经验几乎为零。
我知道有更好的方法可以做到这一点;我故意尝试在不导入 Windows.Forms 的情况下这样做