public partial class Form1 : Form
{
[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 public Form1()
{
InitializeComponent();
}

/// <summary>
/// 调用API打开打印机属性窗口
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
string printerName = "ZEBRA R110Xi4 300DPI";
if (printerName != null && printerName.Length > )
{
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);
}
}

///<summary>
///调用API打开Document property窗口
///</summary>
private void button2_Click(object sender, EventArgs e)
{
string printerName = "ZEBRA R110Xi4 300DPI"; if (printerName != null && printerName.Length > )
{
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, ); pDevModeOutput = System.Runtime.InteropServices.Marshal.AllocHGlobal(iNeeded);
DocumentProperties(this.Handle, pPrinter, printerName, ref pDevModeOutput, ref pDevModeInput, );
ClosePrinter(pPrinter);
}
}
}

winspool.drv的更多相关文章

  1. VadRoot枚举进程模块在Windows7下的完整实现

      原理小伟的小伟在http://bbs.pediy.com/showthread.php?t=66886说的挺清楚了,Windows7下有一些变化,使用NtQueryVirtualMemory来枚举 ...

  2. c#控制打印机杂项

    因项目中需要用到控制打印机的相关信息,此贴将网络寻找的资料做了些整理 1. C# 如何设置系统的默认打印机 using System.Runtime.InteropServices;   [DllIm ...

  3. C# EPL USB 指令打印

    private void btnPrinter_Click(object sender, EventArgs e) { #region ESC 热敏图像点阵像素点读取打印 //Bitmap bitma ...

  4. [C#] 获取打印机列表

    一:获得本地安装的打印机列表 注:(如果在"设备和打印机"中已经添加了局域网的打印机设备,也算是本地安装的打印机:没有添加的则算作局域网打印机) 1,通过 C# 中 Printer ...

  5. 【转】C#使用ESC指令控制POS打印机打印小票

    .前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的pos ...

  6. C#打印条码与ZPL

    ZPL(Zebra Programming Language) 是斑马公司(做条码打印机的公司)自己设计的语言, 由于斑马打印机是如此普遍, 以至于据我所见所知, 条码打印机全部都是斑马的, 所以控制 ...

  7. C#使用ESC指令控制POS打印机打印小票

    1.前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的po ...

  8. 利用ActiveX实现web页面设置本地默认打印机、纸张大小

    通常web技术无法设置本地计算机的默认打印机,包括用代码设置纸张大小,如果业务系统中真遇到这种需求,只能通过其它辅助手段(比如ActiveX)实现.下面这段代码,出自网上被广泛使用的"泥人张 ...

  9. C#Winfrom系统打印机调用/设置默认打印机

    实现如下效果: 实现方式如下: using System;using System.Drawing.Printing;using System.Runtime.InteropServices;usin ...

随机推荐

  1. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

  2. LeetCode-环形链表II

    LeetCode-环形链表II 为找到入口点可以用以下方法 使用快慢指针法直到两个指针相遇 头节点处创建一个新的指针,并且向前移动,两个指针相遇处创建一个新的指针,并且向前移动,直到两个指针相遇为入口 ...

  3. Docker 入坑教程笔记

    Docker 入坑教程笔记 视频网址B站:点这里 查询命令 man docker 简单启动和退出 docker run --name [容器名] -i -t ubuntu /bin/bash 交互启动 ...

  4. Tools - GitBook

    GitBook图书绑定自定义的域名 https://jingyan.baidu.com/article/335530daf86c3b19cb41c3f3.html

  5. Spring IoC的底层技术支持——Java反射机制

    我们知道,通过 new XmlClassPathApplicationContext("beans.xml")等方式即可启动容器.在容器启动时,Spring 根据配置文件的描述信息 ...

  6. PLC编码规范

    PC在编码规范方面比PLC要好很多.既然它们都是编程语言,那么PC方面的规范是否可以用与PLC呢?答案是肯定的,但需要作取舍.下面规范中的大部分可以用于一般PLC,其中有些只是针对西门子博途,使用时需 ...

  7. django模型的字段查询

    条件运算符 exact: 查判等 list=BookInfo.objects.filter(id__exact=1) 可简写为: list=BookInfo.objects.filter(id=1) ...

  8. WHERE条件中or与union引起的全表扫描的问题

    说起数据库的SQL语句执行效率的问题,就不得不提where条件语句中的or(逻辑或)引起的全表扫描问题,从而导致效率下降. 在以往绝大多数的资料中,大多数人的建议是使用 union 代替 or ,以解 ...

  9. P1509 找啊找啊找GF

    P1509 找啊找啊找GF 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七 ...

  10. python简单的数据清洗,数据筛选方法归类

    创建数组有两种方式,1.直接赋值 2.随机变量生成随机生成包括4种:np.arange(20),np.linspace(0,10,5),np.logspace(0,2,5),np.random.ran ...