调用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 && 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 && 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);
}
分享到:
相关推荐
在上述示例中,我们调用了`shell32.dll`中的`SHHelpShortcuts_RunDLLAddPrinter`函数来弹出“添加打印机”对话框。`shell32.dll`是Windows操作系统中的一个核心DLL,提供了许多与桌面环境相关的API函数,包括文件...
- 要弹出打印对话框,首先需要实例化一个`CPrintDialog`对象,然后可以设置其属性,如是否允许用户选择打印机、纸张大小等。接着调用`DoModal()`方法会显示对话框,并等待用户进行交互。 3. **使用代码示例** ```...
当用户在客户端(通常是Web浏览器)上打开一个网页并点击“打印”按钮时,常规操作是弹出一个打印机选择对话框,让用户选择要使用的打印机。然而,在某些场景下,为了提高用户体验或者出于自动化的需求,开发者可能...
打印PDF文件是常见的需求,但有时我们可能需要在特定场景下避免打印设置窗口弹出,直接进行默认打印。这通常涉及到编程接口(API)的使用或特定软件的设置。以下将详细介绍如何实现这一目标。 首先,我们来理解PDF...
8. **打印对话框**: 如果需要用户选择打印机或设置打印选项,可以使用`PrintDlg()`函数弹出打印对话框。 9. **错误处理**: 在整个过程中,应该捕获可能出现的错误并进行适当的处理。例如,检查函数调用的返回值,...
针对“浏览器不弹出打印窗口, 直接调动打印机打印 静默打印程序”的需求,我们将主要探讨如何使用Java编程语言实现这一功能。 首先,Java提供了丰富的API来处理打印任务,这些API集中在`java.awt.print`和`javax....
2. 使用`navigator.bluetooth.requestDevice()`方法选择或扫描蓝牙打印机设备,通常会弹出设备选择对话框。 3. 连接选定的设备,并获取其对应的服务和服务中的特征值。 4. 编写ESC/POS指令序列,根据需求定制打印...
调用`DoModal()`方法可以弹出对话框,用户选择颜色后,可以通过`GetColor()`方法获取所选颜色的RGB值。 2. **图形绘制基础**:在MFC的单文档界面(SDI)应用中,通常使用`CView`或其派生类进行绘图操作。我们需要...
这里特别注意的是,通过`ServiceUI.printDialog()`弹出一个对话框供用户选择打印机,增强了应用的交互性和灵活性。 2. **创建打印作业**:在`start()`方法中,当打印服务`service`不为空时,通过`createPrintJob()`...
当事件发生时,比如打印机报告卡纸,程序可以通过弹出警告对话框、记录日志或发送通知邮件等方式提醒用户。 6. **响应打印状态**: 当打印机状态改变,例如打印完成或出现故障,程序应当能够做出反应。例如,如果...
ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 DeleteForm 从打印机可用表单列表中删除一个表单 DeleteMonitor 删除指定的打印监视器 DeletePort 启动"删除端口"对话框,允许用户从当前...
此外,通过对话框(Dialog Box)可以弹出提示或设置界面,让用户对打印机进行更高级的操作。 5. **错误处理**:在监控过程中,可能会遇到各种错误,如打印机未响应、权限问题等。因此,良好的错误处理机制是必要的...
6. **打印机对话框**:为了方便用户选择打印机和设置打印参数,可以使用`PrintDlg`函数弹出标准的打印对话框。通过处理对话框的返回值,开发者可以获取用户的打印设置,并更新到`DEVMODE`结构中。 7. **自定义...
当用户点击“打印”菜单项时,这个对话框会弹出。在打印对话框中,用户可以预览打印效果,确保文档按照预期的方式输出。在编程中,通常会使用打印API(如Windows的`PrintDlg`函数或跨平台的`QPrinter`类)来创建和...
在用户界面上,通常会有一个“打印”按钮,点击后弹出打印对话框。这个对话框可以通过调用CWinApp的DoModalPrint()方法生成,让用户选择打印机、设置页数等。一旦用户确认,程序将根据选定的设置来调用上述的打印...
本文将详细介绍一种能够避免弹出选择打印机对话框的HTML前台打印小票的方法。 首先,我们需要了解如何在HTML中引入打印控件。在提供的压缩包`printer`中,可能包含了一个自定义的打印控件或库,这个控件允许开发者...
最后,我们使用`MsgBox`函数弹出一个对话框,显示打印机的名称。 值得注意的是,`ActivePrinter`属性返回的字符串可能包含额外的信息,比如打印机的路径和设备设置。例如:"HP LaserJet Pro M404n on Ne02:"。如果...
printDialog组件用于弹出打印机设置对话框,而pinter组件则是负责处理打印逻辑的关键组件。在模板部分,可以看到一个表格列出了数据,每一行数据都有一个打印按钮。当用户点击打印按钮时,会触发doPrint方法,将行...
- 如`CreateMenu`创建菜单,`AppendMenu`添加菜单项,`TrackPopupMenu`显示弹出式菜单,`CheckMenuItem`和`EnableMenuItem`控制菜单项的状态。 7. **API之位图、图标和光栅运算函数** - 包括加载和绘制位图(`...