.net 控制台应用程序中的句柄

.net 控制台应用程序中的句柄,.net,winapi,gdi+,.net,Winapi,Gdi+,我在.net中有一个控制台应用程序,我正在对字体进行处理。我正在为此使用Win32 API,其中一个需要设备上下文来加载字体-实际上是IntPtr hdc=GetDC(屏幕元素句柄)。显然,我的应用程序没有这些句柄,因为它是一个控制台应用程序。有没有办法绕过这个问题 win32 GetDC中的应返回上下文(对于整个屏幕) 所以你应该可以做一些类似的事情 IntPtr hdc = GetDC( null ); if( hdc == null ) { OopsError(); } Ge

我在.net中有一个控制台应用程序,我正在对字体进行处理。我正在为此使用Win32 API,其中一个需要设备上下文来加载字体-实际上是
IntPtr hdc=GetDC(屏幕元素句柄)
。显然,我的应用程序没有这些句柄,因为它是一个控制台应用程序。有没有办法绕过这个问题

win32 GetDC中的应返回上下文(对于整个屏幕)

所以你应该可以做一些类似的事情

IntPtr hdc = GetDC( null );
if( hdc == null ) 
{
    OopsError();
}
GetConsoleWindow()
():

检索与调用进程关联的控制台使用的窗口句柄

或者,传递NULL可能会起作用。从
GetDC()
docs():

要检索其DC的窗口的句柄。如果此值为NULL,则GetDC检索整个屏幕的DC

IntPtr hdc=GetDC(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle)可以在.Net控制台应用程序中正常工作


我不相信
null
会在.Net中工作,因为它会引发错误,参数:无法从
'
转换为
'System.IntPtr'

@TCLo-您需要将句柄传递给哪个win32 API?MSDN文档可能会为我们提供更多关于哪个特定DC适用于您的信息,因此我们可以告诉您如何获取它。