winspool.drv

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 > 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);
            }
        }
                ///<summary>        ///调用API打开Document property窗口        ///</summary>
        private void button2_Click(object sender, EventArgs e)
        {
            string printerName = "ZEBRA R110Xi4 300DPI";

            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, 14);
                ClosePrinter(pPrinter);
            }
        }
    }
时间: 2024-11-02 22:33:10

winspool.drv的相关文章

打印管理库函数Winspool.drv

打印管理库函数Winspool.drv 打印机底层驱动的包 函数名称                         说明AbortPrinter                    删除打印机的假脱机文件AddForm                        向可被选择用于给定打印机的格式表中添加一格式AddJob                          返回一个可用来存储打印工作的文件的完整路径和文件名AddMonitor                    安装一个本机

C#调用windows api 实现打印机控制

using System; using System.Text; using System.Runtime.InteropServices; using System.Security; using System.ComponentModel; namespace SoftPOS { public class PrinterHelper { private PrinterHelper(){ } #region API声明 [StructLayout(LayoutKind.Sequential,

Citrix XenApp和XenDesktop 打印系统解析②

三.思杰通用打印解决方案 思杰的通用解决方案推出的时间很久了,在2004年的思杰iForum大会上,Citrix宣布推出通用打印机驱动程序(UPD)并激动的宣布,Citrix已经永久性的解决了打印的问题.但是事实上,激情之后发现其实通用打印机驱动程序也没有彻底的解决打印问题.其实打印问题长久的悬而未决是微软的问题,思杰只是创造了一些工具,从而使得打印更加的轻松. 思杰的通用打印解决方案,采用了Citrix开发的通用驱动程序(UPD)与底层网络基础设施,允许该驱动程序远程操作所有客户端打印机的设置

warning: Cannot find or open the PDB file

visual studio 2010 正常运行后在output window 跳出一堆warnings 'Shaders.exe': Loaded 'C:\Documents and Settings\User\My Documents\Visual Studio 2010\Projects\Shaders\Win32\Debug\Shaders.exe', Symbols loaded. 'Shaders.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'

Atitit,通过pid获取进程文件路径&#160;java&#160;php&#160;&#160;c#.net版本大总结

Atitit,通过pid获取进程文件路径 java php  c#.net版本大总结 1. 通过PID获取进程路径的几种方法2 1.1. GetModuleFileNameEx 想获得进程可执行文件的路径最常用的方法是通过GetModuleFileNameEx函数获得可执行文件的模块路径这个函数从Windows NT 4.0开始到现在的Vista系统都能使用,向后兼容性比较好.2 1.2. 第二种方法是GetProcessImageFileName函数,这个函数在Windows XP及其以后的系

Winform 打印PDF顺序混乱,获取打印队列

原文:Winform 打印PDF顺序混乱,获取打印队列 工作中PDF打印顺序混乱着实让我疼痛了好久,其实决绝方法非常简单,但没有想到这个点子的时候确实让我走了很多弯路 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找 开始正文 既然要解决打印顺序混乱,那么必须先要实现打印PDF功能,实现PDF打印的方法很多,网上随便一搜就可以找到,这里我贴上自己的打印方法,其实也是网上找到的,稍稍做了修改 Process proc = new Process()

百度网盘遇到未知错误

w OS VERSION: 6.1 IM VERSION: 5,5,4,1 IP: 169.254.97.165 BaiduID: [email protected] SN: 01FE8FFFFE00CFE0367D9D Fault address: 739512A6 0001:000902A6 C:\Users\wwrtwe\AppData\Roaming\baidu\BaiduNetdisk\Bull120U.DLL Exception code = 0xC0000005 Call stac

C#设置默认打印机

开发中经常会遇到需要用到打印机的问题,那么我们现在来一个Demo修改系统默认打印机.先看运行效果吧.(主要为了展示代码和功能,界面就随便拖拉了一个,比较丑,不要介意.) 界面构建非常简单,首先新建一个Form窗体,拉一个comboBox控件和一个Button然后就可以了. 接下来我们看下代码. 首先是加载本地打印机的类LocalPrinter using System; using System.Collections.Generic; using System.Linq; using Syst

C# EPL USB 指令打印

1 private void btnPrinter_Click(object sender, EventArgs e) 2 { 3 4 #region ESC 热敏图像点阵像素点读取打印 5 6 //Bitmap bitmap = new Bitmap(@"D:\450X100.bmp"); 7 //NetPOSPrinter netPOSPrinter = new NetPOSPrinter(); 8 //netPOSPrinter.PrintPic(bitmap); 9 10 #e