添加打印处理器不起作用?

addprintprocessor doesn't work?

本文关键字:不起作用 处理器 打印 添加      更新时间:2023-10-16

我试图在计算机中安装我的printprocessor,但它不起作用??!!

下面的代码:

_In_ LPTSTR pPathName;
_In_ LPTSTR pPrintProcessorName;
string strPathName = "HP1100PP.dll";
string strPrintProcessorName = "HP1100PP";
pPathName = (LPWSTR)strPathName.c_str();
pPrintProcessorName = (LPWSTR)strPrintProcessorName.c_str();
int a = AddPrintProcessor(NULL , NULL ,pPathName , pPrintProcessorName);

a的输出为0。

提前感谢您的回答。

对宽字符字符串(LPWSTR)的强制转换实际上并不会使字符串成为宽字符字符串。您的数据仍然是ANSI,强制转换只是对编译器撒谎的一种手段。去掉那些铸件。不要对编译器撒谎。

然后编译器将拒绝您的代码,因为您的文本是ANSI,但函数需要Unicode文本。因为您编译的目标是Unicode。这是你不诚实的投射所抑制的错误。你需要通过纠正类型不匹配来正确处理它。因此,要么切换到wstring,要么调用AddPrintProcessorA。我建议前者。

我还建议不要使用TCHAR和相关类型。当你瞄准不支持Unicode的Win98时,这很有用,但那些日子已经一去不复返了。