列出本地打印机

2024-04-18

我使用此例程列出计算机上安装的本地打印机:

var
  p: pointer;
  hpi: _PRINTER_INFO_2A;
  hGlobal: cardinal;
  dwNeeded, dwReturned: DWORD;
  bFlag: boolean;
  i: dword;
begin
  p := nil;
  EnumPrinters(PRINTER_ENUM_LOCAL, nil, 2, p, 0, dwNeeded, dwReturned);
  if (dwNeeded = 0) then exit;
  GetMem(p,dwNeeded);
  if (p = nil) then exit;
  bFlag := EnumPrinters(PRINTER_ENUM_LOCAL, nil, 2, p, dwneeded, dwNeeded, dwReturned);
  if (not bFlag) then exit;
  CbLblPrinterPath.Properties.Items.Clear;
  for i := 0 to dwReturned - 1 do
  begin
    CbLblPrinterPath.Properties.Items.Add(TPrinterInfos(p^)[i].pPrinterName);
  end;
  FreeMem(p);

TPrinterInfos(p^)[i].pPrinterName返回打印机名称“P”。我安装了 PdfCreator 作为打印机。

TPrinterInfos是一个数组_PRINTER_INFO_2A.

我怎样才能解决这个问题?


您只需使用 Printer 变量中提供的列表即可获取本地打印机列表。简单如

uses Printers;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Assign(Printer.Printers);
end;

我会使用这种方法,除非你有特定的理由去做你正在做的事情。

最近,我创建了一个 github 存储库,其中包含执行此操作的实用程序。

github.com/tobya/listprn https://github.com/tobya/listprn

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列出本地打印机 的相关文章

  • Move() 从动态字符串数组中插入/删除项目

    使用 System Move 从字符串数组中插入 删除项目并不像从其他简单数据类型数组中插入 删除项目那么容易 问题是 字符串在 Delphi 中是引用计数的 在引用计数数据类型上使用 Move 需要对内部编译器行为有更深入的了解 这里有人
  • delphi中生成随机数

    我想在delphi中创建一个随机数并将其分配给文件作为文件名 我设法做到了这一点 但是当我单击按钮生成数字时 它总是以 0 开头 知道如何修复它 procedure TForm1 Button1Click Sender TObject va
  • 如何仅在某些列中设置带有复选框的 TListView?

    我正在使用 Delphi 2010 并且我试图允许用户在 TListView 中的每行 2 个选项之间进行选择 使用 TListView 我可以将样式设置为 vsReport 并启用复选框 但这只会让我每行有 1 个复选框 我需要的是每行
  • 在 Delphi 7 中使用 TScreen

    我的 Delphi 7 应用程序显示 Screen DesktopWidth Screen DesktopHeight Screen Monitors 0 Width Screen Monitors 0 Height 并且 如果选择了第二台
  • 如何使用 Delphi Sydney 10.4.2 和 Edge Webbrowser 组件获取 HTML SOURCE

    I have TEdgeBrowser在德尔福 10 4 2 中 我想从 HTML 代码中提取基于 RegEx 的字符串 在过去 这是可能的TWebBrowser 仅适用于 IE 11 或更低版本 作为 selectedEngine 但我的
  • Indy FTP 传输类型

    我正在使用 IdFTP Indy 10 组件从远程位置下载一些文件 zip 和 txt 在获取每个文件之前 我将 TransferType 设置为二进制 IdFTP TransferType ftBinary IdFTP Get ASour
  • Delphi - 将字符串从 UTF-8 转换回来

    我在将 UTF 8 编码字符串转换回 delphi 可用的字符串时遇到问题 该应用程序是用 XE8 编写的 并部署在 Windows 和 OSX 上 该应用程序分别在 Windows 和 OSX 上使用 LimeLM API dll 和 d
  • 从单个应用程序中的多个线程调用 dll 函数是否安全?

    我正在 Delphi 2009 中编写一个服务器应用程序 它实现了多种类型的身份验证 每种身份验证方法都存储在单独的 dll 中 第一次使用身份验证方法时 会加载适当的 dll 仅当应用程序关闭时 DLL 才会被释放 在服务器线程 连接 之
  • EIdOSSLUnderlyingCryptoError 和“使用 SSL 连接时出错。错误:14094410...”

    我在 OS X 上的 Delphi 10 1 Berlin 中遇到 Indy 组件问题 我正在使用TIdHTTP使用 HTTPS 连接到 Web 服务 问题是从 OS X 客户端连接到服务器 在 OS X 上运行时 我总是遇到同样的错误 P
  • Delphi - 相当于C#的三元运算符? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi 中是否存在或者将来是否存在条件运算符 https stackoverflow com questions 2108609 is there or is there ever going
  • 在 Delphi XE 中将类作为过程的参数传递

    我需要做的是这样的 procedure A type of form var form TForm begin form type of form Create application form showmodal freeandnil f
  • 如何将 JSON 字符串转换为图像?

    我有一个将图像转换为 JSON 数组的应用程序 并将其保存到 blob 字段中 function getImage String var memorystream TMemoryStream jsonArray TJSONArray beg
  • 在 Delphi 2007 中将具有透明度的位图保存为 PNG

    我有一个包含透明度信息的 Delphi 位图 32 位 我需要将其转换并保存为 PNG 文件 同时保留透明度 我目前拥有的工具是graphics32 Library GR32 PNG 由Christian Budde 提供 和PNGImag
  • 在TImageViewer中,如何获取用户点击图片的位置?

    在TImageViewer控件中 用户可以缩放或平移图片 我的问题是 当用户点击图片时 如何获取用户在图片上的点击位置 尤其是用户可以对图片进行放大 缩小或平移之后 如何获取对应的图片点击位置呢 As shown below How to
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • 查找Delphi项目中的所有编译错误

    我正在对我的 Delphi 项目进行一些重构 我希望能够做出改变 然后看看all项目中因该更改而中断的地方 类似于 Eclipse 列出项目的所有编译错误 在 Java 中 在 Delphi 中 我可以进行更改 然后重新编译我的项目 但编译
  • 在Delphi 7中,为什么我可以给const赋值?

    我将一些 Delphi 代码从一个项目复制到另一个项目 发现它在新项目中无法编译 但在旧项目中可以编译 代码看起来像这样 procedure TForm1 CalculateGP const Price money 0 begin Pric
  • 调试器异常错误和内存超调

    我尝试运行以下代码 但它显示有关内存地址的错误 并显示一条消息 循环后 n 可能未定义 请看一看 var n max integer n integer r R1 f h0 Array of Real const h 0 00889 nip
  • Delphi应用程序窗口z顺序和MainFormOnTaskBar属性

    我正在维护一个最初用 Delphi 7 编写并移植到 Delphi XE 的应用程序 使用 Windows 7 我们遇到了一些问题 例如模态窗口出现在主窗口下方 以及最终无法与程序交互 因为用户需要与模态窗体交互 而这是不可能的 因为它位于
  • Delphi 2010 - 从 XML 文档解码 Base64 编码图像

    我正在尝试从应用程序中的 XML 文档解码 base64 编码的 EMF 图像并将其呈现在屏幕上 但是 它似乎从未出现 如果我将 XML 文档中的数据复制 粘贴到 Notepad 中并使用Base64 Decode选项并将文件另存为 emf

随机推荐

  • PHP Ajax上传进度条

  • 什么是消息边界?

    什么是 消息边界 在以下情况下 TCP 和 UDP 之间的区别之一是 UDP 保留消息 边界 我理解之间的区别TCP and UDP 但我不确定的定义 消息边界 由于 UDP 在每个单独的数据包中包含目的地和端口信息 因此是否可以为消息提供
  • 使用 terraform 将公共 GKE 更改为私有 GKE 集群

    如何将现有的GKE集群更改为GKE私有集群 我是否能够根据防火墙规则从互联网连接到 Kubectl API 还是应该拥有堡垒主机 我不想实施Cloud Nat or nat gateway 我有一个鱿鱼代理虚拟机 可以处理 Pod 的互联网
  • 如何使用 javascript/jquery 设置 asp 面板元素可见/隐藏

    我有一个asp Panel我的页面上的元素 我可以在后面的代码中设置其可见性 但我还需要通过 javascipt 隐藏它 My panel定义如下
  • 使用 docker-client api 将镜像推送到 docker 注册表

    在探索 docker client api java 时 设置与虚拟机上运行的 docker 守护进程的连接到底需要哪些证书 我在网上找到的代码 Create a client based on DOCKER HOST and DOCKER
  • Hibernate 单向一对多关联 - 为什么连接表更好?

    在本文档中 向下滚动到单向部分 http docs jboss org hibernate stable annotations reference en html single entity mapping association col
  • 自动替换在 emacs 中输入的某些文本字符串

    有一个小细节一直困扰着我一段时间 即我经常打字 inclued代替 include 如果不是很明显的话 我编写了大量 C 和 C 程序 这个拼写错误破坏了无数的构建并消耗了本来可以用来喝咖啡或冲浪的时间 当然 emacs 可以提供帮助并在我
  • 当 ExceptionMapper 创建响应时,未遍历 RestEasy 后处理拦截器链

    我正在使用 RestEasy 构建我的 Restful Web 服务 我已经实现了 ExceptionMappers 来准备特定的异常响应 我还实现了 MessageBodyWriterInterceptors 和几个 PostProces
  • EasyMock的使用方法

    期望似乎对我不起作用 package com jjs caf library client drafting import static org junit Assert import org easymock EasyMock impor
  • 用于从段落中删除所有属性的正则表达式

    我知道正则表达式通常不应该用于解析 html 内容 在我的特殊情况下 我需要它们 原因是 我使用 rte 编辑器 并且在粘贴到编辑器中时需要对段落属性进行一些替换 我有类似的东西 p text blah blah p 我需要删除所有属性 以
  • 数组中的clear方法

    我正在尝试创建一个清除方法来清除我拥有的数组 我已经看到使用清除方法是我所需要的 但我似乎无法使用它 list clear 我认为我必须做的 public void clear return doctors clear 顺便说一下 医生是一
  • 参数和属性之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 getAttribute 和 getParameter 之间的区别 https stackoverflow com questions 5243754 difference between getat
  • 当我的 MySQL 表更新时,如何收到电子邮件?

    您好 我想知道 MySQL 中是否有一种方法可以在 MySQL 表中添加一行时自动向自己发送电子邮件 实现这一目标的最佳方法是使用触发器和 cron 创建一个 通知队列 表 并在将行插入所需表时使用触发器填充该表 eg CREATE TAB
  • 如何在 R 中创建类似箱线图的分类散点图?

    有谁知道如何创建散点图R创建像这样的情节these http graphpad com support faq graph tip how can i make a barcolumn graph that also shows the i
  • 使用 zip4j 重命名 zip 中的文件

    我在用着zip4j http www lingala net zip4j download php1 3 1 在我的应用程序中压缩文件 现在我尝试重命名 zip 内的文件 而不必重命名文件本身 似乎有一种方法可以做到这一点 但它不起作用 我
  • 将当前日期设置为在 Bootstrap 日期选择器中选择

    我在用引导日期选择器 https github com eternicode bootstrap datepicker在我的代码中 如何在 JavaScript 中选择当前日期并将其显示为已选择 经过研究 这是我正在使用的代码 但当天没有显
  • 本地 JS 文件的 Typescript 声明文件

    当我们正在转换为 Typescript 的过程中 我正在尝试为工作中的 Javascript 文件添加类型 但是 我无法识别声明文件 这是我的文件结构 js Foo js typings Foo 索引 d ts index ts 包 jso
  • Symfony 4:JWT 和 Behat 的测试数据库

    我将 API Platform 2 1 与 Symfony 4 结合使用 并使用 LexikJWTAuthenticationBundle 进行身份验证 并使用 Behat 进行测试 我无法正确设置 这是到目前为止我的配置 Feature
  • 将使用 FPDF php 库创建的 PDF 保存在 MySQL blob 字段中

    我需要创建一个 pdf 文件fpdf http www fpdf org库并将其保存在我的 MySQL 数据库的 blob 字段中 问题是 当我尝试从 blob 字段检索文件并将其发送到浏览器进行下载时 下载的文件已损坏并且无法正确显示 如
  • 列出本地打印机

    我使用此例程列出计算机上安装的本地打印机 var p pointer hpi PRINTER INFO 2A hGlobal cardinal dwNeeded dwReturned DWORD bFlag boolean i dword