遍历电脑打印机、设置默认打印机、及WIN32 打印API
本文地址:http://tongxinmao.com/Article/Detail/id/251
得到电脑的默认打印机
TCHAR szBuffer[1024]={0}; DWORD length = 1024; int ret = ::GetDefaultPrinter(szBuffer,&length); if(ret == FALSE) ret = ::GetLastError(); else { SetDlgItemText(IDC_EDIT1,szBuffer); return; } if (ret == ERROR_INSUFFICIENT_BUFFER) { CString temp; temp.Format(_T("%d"),length); AfxMessageBox(CString(_T("ERROR_INSUFFICIENT_BUFFER"))+_T(" the real size is ")+temp); } else if(ret == ERROR_FILE_NOT_FOUND) AfxMessageBox(_T("ERROR_FILE_NOT_FOUND")); else { CString strRet; strRet.Format(_T("%d"),ret); AfxMessageBox(strRet); }
设置电脑默认打印机
TCHAR szPrinterName[1024]={0}; GetDlgItemText(IDC_EDIT2,szPrinterName,1024); BOOL ret = FALSE; ret = SetDefaultPrinter(szPrinterName); if(ret == FALSE) AfxMessageBox(_T("设置默认打印机失败")); else AfxMessageBox(_T("设置默认打印机成功"));
遍历电脑中的打印机
DWORD Flags = PRINTER_ENUM_FAVORITE | PRINTER_ENUM_LOCAL; DWORD cbBuf; DWORD pcReturned ; CString str; DWORD Level = 2; TCHAR Name[500]={0} ; ::EnumPrinters(Flags, Name, Level, NULL, 0, &cbBuf, //需要多少内存 &pcReturned) ; const LPPRINTER_INFO_2 pPrinterEnum = (LPPRINTER_INFO_2)LocalAlloc(LPTR, cbBuf + 4) ; if (!pPrinterEnum) { str.Format(L"error is %d",GetLastError()); MessageBox(str,0,0); } if (!EnumPrinters( Flags, Name, Level, (LPBYTE)pPrinterEnum, cbBuf, &cbBuf, &pcReturned) ) { str.Format(L"error is %d",::GetLastError()); MessageBox(str,0,0); return ; } CString temp; temp.Format(_T("有几个数组元素%d"),pcReturned); AfxMessageBox(temp); for(unsigned int i=0;i<pcReturned;i++) { m_ListPrinter.InsertItem(i,NULL); //插入一行 LPPRINTER_INFO_2 pInfo=&pPrinterEnum[i]; m_ListPrinter.SetItemText(i,0,pInfo->pPrinterName); m_ListPrinter.SetItemText(i,1,pInfo->pServerName); m_ListPrinter.SetItemText(i,2,pInfo->pDriverName); m_ListPrinter.SetItemText(i,3,pInfo->pPrintProcessor); } LocalFree(pPrinterEnum);
出处:http://www.cnblogs.com/zhangdongsheng/
4. API之打印函数 AbortDoc 取消一份文档的打印 AbortPrinter 删除与一台打印机关联在一起的缓冲文件 AddForm 为打印机的表单列表添加一个新表单 AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 AddMonitor 为系统添加一个打印机监视器 AddPort 启动 "添加端口" 对话框,允许用户在系统可用端口列表中加入一个新端口 AddPrinter 在系统中添加一台新打印机 AddPrinterConnection 连接指定的打印机 AddPrinterDriver 为指定的系统添加一个打印驱动程序 AddPrintProcessor 为指定的系统添加一个打印处理器 AddPrintProvidor 为系统添加一个打印供应商 AdvancedDocumentProperties 启动打印机文档设置对话框 ClosePrinter 关闭一个打开的打印机对象 ConfigurePort 针对指定的端口,启动一个端口配置对话框 ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 DeleteForm 从打印机可用表单列表中删除一个表单 DeleteMonitor 删除指定的打印监视器 DeletePort 启动 "删除端口" 对话框,允许用户从当前系统删除一个端口 DeletePrinter 将指定的打印机标志为从系统中删除 DeletePrinterConnection 删除与指定打印机的连接 DeletePrinterDriver 从系统删除一个打印机驱动程序 DeletePrintProcessor 从指定系统删除一个打印处理器 DeletePrintProvidor 从系统中删除一个打印供应商 DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 DocumentProperties 打印机配置控制函数 EndDocAPI 结束一个成功的打印作业 EndDocPrinter 在后台打印程序的级别指定一个文档的结束 EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 EndPagePrinter 指定一个页在打印作业中的结尾 EnumForms 枚举一台打印机可用的表单 EnumJobs 枚举打印队列中的作业 EnumMonitors 枚举可用的打印监视器 EnumPorts 枚举一个系统可用的端口 EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 EnumPrinters 枚举系统中安装的打印机 EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 EnumPrintProcessors 枚举系统中可用的打印处理器 Escape 设备控制函数 FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 GetForm 取得与指定表单有关的信息 GetJob 获取与指定作业有关的信息 GetPrinter 取得与指定打印机有关的信息 GetPrinterData 为打印机设置注册表配置信息 GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 OpenPrinter 打开指定的打印机,并获取打印机的句柄 PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 ReadPrinter 从打印机读入数据 ResetDC 重设一个设备场景 ResetPrinter 改变指定打印机的默认数据类型及文档设置 ScheduleJob 提交一个要打印的作业 SetAbortProc 为Windows指定取消函数的地址 SetForm 为指定的表单设置信息 SetJob 对一个打印作业的状态进行控制 SetPrinter 对一台打印机的状态进行控制 SetPrinterData 设置打印机的注册表配置信息 StartDoc 开始一个打印作业 StartDocPrinter 在后台打印的级别启动一个新文档 StartPage 打印一个新页前要先调用这个函数 StartPagePrinter 在打印作业中指定一个新页的开始 WritePrinter 将发送目录中的数据写入打印机 |
上一篇:激光打印机工作原理
下一篇:Android连接网络打印机,jSocket连接网络打印机