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