Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从.NET打印API检索设备上下文_C#_.net_Printing_Pinvoke - Fatal编程技术网

C# 从.NET打印API检索设备上下文

C# 从.NET打印API检索设备上下文,c#,.net,printing,pinvoke,C#,.net,Printing,Pinvoke,我正在开发一个.NET应用程序来控制DataCard桌面卡打印机,我偶然发现了一个问题。为了执行磁条和芯片编码,我必须调用本机打印机API dll中的函数以启用打印机交互模式 我已经设法创建了p/Invoke代码来调用这个本机函数。但问题是,此方法将打印机设备上下文句柄作为参数,必须在调用Gdi32 StartDoc函数之前调用 在.NET打印API中,我确实可以从图形对象访问hDC。但据我所知,图形对象只有在调用StartDoc函数后才可用 因此,我的问题是,在调用StartDoc之前,是否有

我正在开发一个.NET应用程序来控制DataCard桌面卡打印机,我偶然发现了一个问题。为了执行磁条和芯片编码,我必须调用本机打印机API dll中的函数以启用打印机交互模式

我已经设法创建了p/Invoke代码来调用这个本机函数。但问题是,此方法将打印机设备上下文句柄作为参数,必须在调用Gdi32 StartDoc函数之前调用

在.NET打印API中,我确实可以从图形对象访问hDC。但据我所知,图形对象只有在调用StartDoc函数后才可用


因此,我的问题是,在调用StartDoc之前,是否有人知道检索上下文的方法?

您可以执行
OpenPrinter
来检索打印机句柄(
handle
),然后调用
CreateDC
,通过传入此句柄随时(在
StartDoc
之前)获取打印机DC.

您可以执行一个
打开打印机
来检索打印机句柄(
句柄
),然后通过传入此句柄来调用
CreateDC
,以便随时(在
开始DC
之前)获取打印机DC。

我假设您指的是“winspool.drv”和“gdi32.dll”函数?我知道使用本机C API做到这一点并不困难。但是我的应用程序是一个.NET应用程序,所以我希望我能尽可能使用.NET api。你已经在使用P/Invoke了,这就是为什么我要冒险回答这个问题。在问题中清楚地提到您的需求。我想我清楚地提到了我的问题是.NET打印API。然而,为Gdi32编写自己的p/invoke包装似乎是实现这一点的唯一方法。我想您指的是“winspool.drv”和“Gdi32.dll”函数?我知道使用本机C API做到这一点并不困难。但是我的应用程序是一个.NET应用程序,所以我希望我能尽可能使用.NET api。你已经在使用P/Invoke了,这就是为什么我要冒险回答这个问题。在问题中清楚地提到您的需求。我想我清楚地提到了我的问题是.NET打印API。然而,为Gdi32编写自己的p/invoke包装器似乎是实现这一点的唯一方法。