c# 如何调用打印机 打印PDF文件
展开全部
调用api弹出打印机属性对话框
Author:vitoriatang
From:Internet
.NET Framework封装了很多关于打印的对话框,比如说PrintDialog, PageSetupDialog.
但是有的时候我们还需要关心打印机属性对话框,那么就可以调用API来解决这个问题。有几个API函数与之相关
PrinterProperties
DocumentProperties
OpenPrinter
ClosePrinter
逐一介绍
printerproperties
显示打印机属性对话框。
documentproperties
显示打印机配置对话框。
openprinter
打开打印机
closeprinter
关闭打印机
在调用printerproperties或者documentproperties的时候,都需要先调用openprinter,并在结束后调用closeprinter。
至于打印机属性和打印机配置有什么不同,就自己领会了。更为详尽的信息可以查阅msdn
sample codes:
1. 声明API函数
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv", SetLastError = true)]
public extern static int DocumentProperties(
IntPtr hWnd, // handle to parent window
IntPtr hPrinter, // handle to printer object
string pDeviceName, // device name
ref IntPtr pDevModeOutput, // modified device mode
ref IntPtr pDevModeInput, // original device mode
int fMode); // mode options
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv")]
public static extern int PrinterProperties(
IntPtr hwnd, // handle to parent window
IntPtr hPrinter); // handle to printer object
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv", SetLastError = true)]
public extern static int OpenPrinter(
string pPrinterName, // printer name
ref IntPtr hPrinter, // handle to printer object
ref IntPtr pDefault); // handle to default printer object.
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv", SetLastError = true)]
public static extern int ClosePrinter(
IntPtr phPrinter); // handle to printer object
2.调用DocumentProperties
private void documentPropButton_Click(object sender, EventArgs e)
{
string printerName = _document.PrinterSettings.PrinterName;
if (printerName != null &;amp;&;amp; printerName.Length > 0)
{
IntPtr pPrinter = IntPtr.Zero;
IntPtr pDevModeOutput = IntPtr.Zero;
IntPtr pDevModeInput = IntPtr.Zero;
IntPtr nullPointer = IntPtr.Zero;
OpenPrinter(printerName, ref pPrinter, ref nullPointer);
int iNeeded = DocumentProperties(this.Handle, pPrinter, printerName, ref pDevModeOutput, ref pDevModeInput, 0);
pDevModeOutput = System.Runtime.InteropServices.Marshal.AllocHGlobal(iNeeded);
DocumentProperties(this.Handle, pPrinter, printerName, ref pDevModeOutput, ref pDevModeInput, DM_PROMPT);
ClosePrinter(pPrinter);
}
}
3. 调用PrinterProperties
private void printPropButton_Click(object sender, EventArgs e)
{
string printerName = _document.PrinterSettings.PrinterName;
if (printerName != null &;amp;&;amp; printerName.Length > 0)
{
IntPtr pPrinter = IntPtr.Zero;
IntPtr pDevModeOutput = IntPtr.Zero;
IntPtr pDevModeInput = IntPtr.Zero;
IntPtr nullPointer = IntPtr.Zero;
OpenPrinter(printerName, ref pPrinter, ref nullPointer);
int iNeeded = PrinterProperties(this.Handle, pPrinter);
ClosePrinter(pPrinter);
}
}
Author:vitoriatang
From:Internet
.NET Framework封装了很多关于打印的对话框,比如说PrintDialog, PageSetupDialog.
但是有的时候我们还需要关心打印机属性对话框,那么就可以调用API来解决这个问题。有几个API函数与之相关
PrinterProperties
DocumentProperties
OpenPrinter
ClosePrinter
逐一介绍
printerproperties
显示打印机属性对话框。
documentproperties
显示打印机配置对话框。
openprinter
打开打印机
closeprinter
关闭打印机
在调用printerproperties或者documentproperties的时候,都需要先调用openprinter,并在结束后调用closeprinter。
至于打印机属性和打印机配置有什么不同,就自己领会了。更为详尽的信息可以查阅msdn
sample codes:
1. 声明API函数
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv", SetLastError = true)]
public extern static int DocumentProperties(
IntPtr hWnd, // handle to parent window
IntPtr hPrinter, // handle to printer object
string pDeviceName, // device name
ref IntPtr pDevModeOutput, // modified device mode
ref IntPtr pDevModeInput, // original device mode
int fMode); // mode options
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv")]
public static extern int PrinterProperties(
IntPtr hwnd, // handle to parent window
IntPtr hPrinter); // handle to printer object
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv", SetLastError = true)]
public extern static int OpenPrinter(
string pPrinterName, // printer name
ref IntPtr hPrinter, // handle to printer object
ref IntPtr pDefault); // handle to default printer object.
[System.Runtime.InteropServices.DllImportAttribute("winspool.drv", SetLastError = true)]
public static extern int ClosePrinter(
IntPtr phPrinter); // handle to printer object
2.调用DocumentProperties
private void documentPropButton_Click(object sender, EventArgs e)
{
string printerName = _document.PrinterSettings.PrinterName;
if (printerName != null &;amp;&;amp; printerName.Length > 0)
{
IntPtr pPrinter = IntPtr.Zero;
IntPtr pDevModeOutput = IntPtr.Zero;
IntPtr pDevModeInput = IntPtr.Zero;
IntPtr nullPointer = IntPtr.Zero;
OpenPrinter(printerName, ref pPrinter, ref nullPointer);
int iNeeded = DocumentProperties(this.Handle, pPrinter, printerName, ref pDevModeOutput, ref pDevModeInput, 0);
pDevModeOutput = System.Runtime.InteropServices.Marshal.AllocHGlobal(iNeeded);
DocumentProperties(this.Handle, pPrinter, printerName, ref pDevModeOutput, ref pDevModeInput, DM_PROMPT);
ClosePrinter(pPrinter);
}
}
3. 调用PrinterProperties
private void printPropButton_Click(object sender, EventArgs e)
{
string printerName = _document.PrinterSettings.PrinterName;
if (printerName != null &;amp;&;amp; printerName.Length > 0)
{
IntPtr pPrinter = IntPtr.Zero;
IntPtr pDevModeOutput = IntPtr.Zero;
IntPtr pDevModeInput = IntPtr.Zero;
IntPtr nullPointer = IntPtr.Zero;
OpenPrinter(printerName, ref pPrinter, ref nullPointer);
int iNeeded = PrinterProperties(this.Handle, pPrinter);
ClosePrinter(pPrinter);
}
}
程经理
2025-01-01 广告
2025-01-01 广告
作为硕方科技(北京)有限公司的一员,我们的硕方标签打印机在复制粘贴功能上表现出色。用户可以通过其配套的编辑软件或手机APP,轻松实现文本内容的复制与粘贴,极大地提高了标签编辑的效率与准确性。无论是批量制作还是个性化定制,硕方标签打印机都能满...
点击进入详情页
本回答由程经理提供
2010-12-06
展开全部
鼠标放在需要打印的文件上,右键单击、按p键。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |