【问题标题】:ProcessStartInfo print verb does not exist for .tif images.tif 图像不存在 ProcessStartInfo 打印动词
【发布时间】:2009-06-01 18:11:53
【问题描述】:

我们有一款软件尝试使用 ProcessStartInfo 对象打印 .tif 图像。它将 Verb 属性设置为“打印”,将 FileName 属性设置为图像的路径。然后它将 UseShellExecute 属性设置为 true 并执行 Process.Start() 方法。

但是,什么也没有发生。我创建了一个小型测试程序来列出与 .tif 图像相关的动词,它只显示“Shell”,而不是“print”。

我无法修改这个软件,那么有没有办法为 .tif 图像类型定义或注册“打印”动词以允许它们打印?

【问题讨论】:

  • "shell" 是动词键的父键,所以我认为你的测试程序可能是错误的。

标签: .net vb.net printing process


【解决方案1】:

首先,您可能正在寻找的动词可能是printto

你也可以直接shell执行打印命令,用

"%SystemRoot%\System32\rundll32.exe" "%SystemRoot%\System32\shimgvw.dll",ImageView_PrintTo /pt "%1" "%2" "%3" "%4"

参数在KB224961中解释为:

%1  File name
%2  Printer name
%3  Driver name
%4  Port name
/p  Print
pt  Printto

【讨论】:

  • 这也不可用。 Verbs 属性仅将 Shell 显示为可用于 .tif 类型。另外,就像我说的,我不能以任何方式修改这段代码。
  • @NYSA - 您遇到问题的系统中是否存在 printto 动词?我想你会发现它不见了,需要创建。
  • 好的。我使用工具 -> 文件夹选项 -> 文件类型来添加 TIF 文件类型。对于文件类型,在高级下,我添加了一个“打印”操作并使用了上面发布的命令。但是,当我尝试通过测试应用程序或右键单击上下文菜单进行打印时,我会收到拒绝访问消息。有什么想法被拒绝访问吗?
  • 您如何确定“shell”是动词?您可以使用 regedit.exe 手动检查动词是什么...转到 HKEY_CLASSES_ROOT\.tif 并记下默认值。然后转到 HKEY_CLASSES_ROOT\\shell 并注意子键是什么。这些是你的动词。对于任何看起来像打印的东西,\command 子键的默认值是多少?这就是那个动词所调用的内容,这就是(可能)报告访问被拒绝的内容。
  • 感谢您将我指向该注册表项。就是这样。我必须找到 TIF.ImageDocument 键,然后,我必须在 shell 中添加一个与“printto”具有相同值的“print”键,但使用 /p 而不是 /pt 开关,并删除 %3和 %4 个参数。这似乎使应用程序正常工作。
猜你喜欢
  • 2022-06-11
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2021-08-09
相关资源
最近更新 更多