检索当前用户打印机的图标
我正在尝试模拟 MS Office 打印对话框的打印机选择组合框。 下拉列表包含打印机名称,左侧带有大打印机图标。 在 Vista 传真打印机上有一个漂亮的传真图标,共享打印机被标记,默认打印机也是如此。 最好还能够查看更多打印机信息,就像资源管理器查看“控制面板”->“打印机”一样。
有什么想法从哪里开始吗?
SHGetFileInfo
取得了一定的成功,但我们非常欢迎您提出意见。
[操作系统:windows,代码语言:任意]
I'm trying to emulate MS Office print dialog's printer selection combobox. The drop-down list contains printer names with large printer icons to the left. On Vista fax printer has a nice fax icon, shared printers are marked, default printer too. Best would be to be able to view some more printer info too, like explorer does viewing Control Panel->Printers.
Any ideas where to start with that?
Had moderate success with SHGetFileInfo
but your opinion is most welcome.
[os: windows, code language: any]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我最终想到的。 对于各种 OLE 接口,您需要 IShellFolder 扩展类型库 v1.2。 我确信这个 typelib 可以以更好的方式移植到 VB6,但无论如何,结果如下:
Here is what I finally came up with. You'll need IShellFolder Extended Type Library v1.2 for the various OLE interfaces. I'm positive this typelib can be ported in a better way to VB6 but anyway here is the result:
您没有说明如何调用 SHGetFileInfo,但我猜您需要设置 SHGFI_PIDL 标志并使用完全限定的 PIDL(也许还有 SHGFI_USEFILEATTRIBUTES)
要获取共享/默认覆盖图标,请设置 SHGFI_ADDOVERLAYS 标志
You don't say how you are calling SHGetFileInfo, but I would guess you need to set the SHGFI_PIDL flag and use a fully qualified PIDL (And maybe SHGFI_USEFILEATTRIBUTES)
To get shared/default overlay icons, set the SHGFI_ADDOVERLAYS flag