VC中,ShellExecute函数如何用默认打印机打印?
ActiveX控件中要用ShellExecute对文档进行打印,如果word文档曾经在word软件中选用A打印机执行过打印操作,会有这样结果:调用ShellExecute...
ActiveX控件中要用ShellExecute对文档进行打印,
如果word文档曾经在word软件中选用A打印机执行过打印操作,会有这样结果:
调用ShellExecute打印该word文档时,即使事先将默认打印机设为了B,却还是会调用A打印机进行打印,丝毫不理会当前默认打印机是什么。
求教各位达人,这种情况怎么解决?
我希望能用自己设定的默认打印机对文档进行打印。。
我的打印命令是这个:ShellExecute(NULL,"print",fileSavePathName,NULL,NULL,SW_SHOW); 展开
如果word文档曾经在word软件中选用A打印机执行过打印操作,会有这样结果:
调用ShellExecute打印该word文档时,即使事先将默认打印机设为了B,却还是会调用A打印机进行打印,丝毫不理会当前默认打印机是什么。
求教各位达人,这种情况怎么解决?
我希望能用自己设定的默认打印机对文档进行打印。。
我的打印命令是这个:ShellExecute(NULL,"print",fileSavePathName,NULL,NULL,SW_SHOW); 展开
3个回答
展开全部
使用ShellExecute打印,它会通过文件扩展名调用默认的打开程序进行打印。
换句话说,如果是doc文档,就会使用word打印,你的参数为SHOW,还可以看到一个word的打开过程(会自动关闭)。
而不使用默认打印机,就是因为要打印的文档或者文件关联程序指定了使用的打印机(这个和文件格式有关,比如doc文件格式中,是可以指定打印机的),所以,如果没有指定,那么一定会使用默认打印机,而不使用默认,和程序无关(也管理不了),只能看是文档问题还是关联程序问题。
换句话说,如果是doc文档,就会使用word打印,你的参数为SHOW,还可以看到一个word的打开过程(会自动关闭)。
而不使用默认打印机,就是因为要打印的文档或者文件关联程序指定了使用的打印机(这个和文件格式有关,比如doc文件格式中,是可以指定打印机的),所以,如果没有指定,那么一定会使用默认打印机,而不使用默认,和程序无关(也管理不了),只能看是文档问题还是关联程序问题。
追问
我现在是想打印本地的PDF文档,原来的命令是ShellExecute(NULL,"print",fileSavePathName,NULL,NULL,SW_HIDE);那照你的说法,是不是我先用某台打印机打印过一次,后面我设置另一台打印机作为默认的,再调用ShellExecute命令打印,它还是只能在原先的打印机上打印?这个问题是不是没办法解决了?还有没有别的API能实现上述打印功能啊?
追答
ShellExecute是“抛出式”的命令,本身没有对打印机设置的功能,使用哪个打印机,程序干预不了。
据我所知,API的方式只能是抛出打印,无法控制,但你所说问题我觉得还是和软件有关,正常就是使用默认打印机的。
另外,可以使用ActiveX的方式,将PDF文档在程序中打开并打印,这个可以实现程序内的打印机设置和各种打印控制。当然,这种方法稍微复杂,而且你程序改动会比较大。
推荐于2018-05-15 · 知道合伙人教育行家
关注
展开全部
1. 函数功能:
你可以给它任何文件的名字,它都能识别出来并打开它。
2.函数原型:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
3.参数说明:
hwnd:
用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。
lpOperation:
用于指定要进行的操作。
“open”操作表示执行由lpFile参数指定的程序,或打开由lpFile参数指定的文件或文件夹;
“print”操作表示打印由lpFile参数指定的文件;
“explore”操作表示浏览由lpFile参数指定的文件夹。
你可以给它任何文件的名字,它都能识别出来并打开它。
2.函数原型:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
3.参数说明:
hwnd:
用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。
lpOperation:
用于指定要进行的操作。
“open”操作表示执行由lpFile参数指定的程序,或打开由lpFile参数指定的文件或文件夹;
“print”操作表示打印由lpFile参数指定的文件;
“explore”操作表示浏览由lpFile参数指定的文件夹。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果路径没错的话,改为:ShellExecute(NULL,NULL,&quot;E:&#92;&#92;Program Files&#92;&#92;Thunder Network&#92;&#92;Thunder&#92;&#92;Program&#92;&#92;Thunder5.exe&quot;hlNULLNULLjnSW_SHOWNORMAL);试试
追问
我的打印命令是这个:ShellExecute(NULL,"print", fileSavePathName,NULL,NULL,SW_SHOW);你给我的那段代码看不懂啊,能详述下么?
我的打印命令是这个:ShellExecute(NULL,"print", fileSavePathName,NULL,NULL,SW_SHOW);你给我的那段代码看不懂啊,能详述下么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询