VC中,ShellExecute函数如何用默认打印机打印?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC中,ShellExecute函数如何用默认打印机打印?相关的知识,希望对你有一定的参考价值。
ActiveX控件中要用ShellExecute对文档进行打印,
如果word文档曾经在word软件中选用A打印机执行过打印操作,会有这样结果:
调用ShellExecute打印该word文档时,即使事先将默认打印机设为了B,却还是会调用A打印机进行打印,丝毫不理会当前默认打印机是什么。
求教各位达人,这种情况怎么解决?
我希望能用自己设定的默认打印机对文档进行打印。。
我的打印命令是这个:ShellExecute(NULL,"print",fileSavePathName,NULL,NULL,SW_SHOW);
换句话说,如果是doc文档,就会使用word打印,你的参数为SHOW,还可以看到一个word的打开过程(会自动关闭)。
而不使用默认打印机,就是因为要打印的文档或者文件关联程序指定了使用的打印机(这个和文件格式有关,比如doc文件格式中,是可以指定打印机的),所以,如果没有指定,那么一定会使用默认打印机,而不使用默认,和程序无关(也管理不了),只能看是文档问题还是关联程序问题。追问
我现在是想打印本地的PDF文档,原来的命令是ShellExecute(NULL,"print",fileSavePathName,NULL,NULL,SW_HIDE);那照你的说法,是不是我先用某台打印机打印过一次,后面我设置另一台打印机作为默认的,再调用ShellExecute命令打印,它还是只能在原先的打印机上打印?这个问题是不是没办法解决了?还有没有别的API能实现上述打印功能啊?
追答ShellExecute是“抛出式”的命令,本身没有对打印机设置的功能,使用哪个打印机,程序干预不了。
据我所知,API的方式只能是抛出打印,无法控制,但你所说问题我觉得还是和软件有关,正常就是使用默认打印机的。
另外,可以使用ActiveX的方式,将PDF文档在程序中打开并打印,这个可以实现程序内的打印机设置和各种打印控制。当然,这种方法稍微复杂,而且你程序改动会比较大。
你可以给它任何文件的名字,它都能识别出来并打开它。
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参数指定的文件夹。 参考技术B 如果路径没错的话,改为:ShellExecute(NULL,NULL,"E:\\Program Files\\Thunder Network\\Thunder\\Program\\Thunder5.exe"hlNULLNULLjnSW_SHOWNORMAL);试试追问
我的打印命令是这个:ShellExecute(NULL,"print", fileSavePathName,NULL,NULL,SW_SHOW);你给我的那段代码看不懂啊,能详述下么?
我的打印命令是这个:ShellExecute(NULL,"print", fileSavePathName,NULL,NULL,SW_SHOW);你给我的那段代码看不懂啊,能详述下么?
python如何用print打印出列表
直接使用print函数就可以了,举个例子:
L=['apple','fruit']#定义一个列表
print(L)#输出一个列表
输出结果就是['apple','fruit']。
扩展资料:
不带输出项的print即为输出一个空行,如果之前的print语句输出项的最后用了诸如“,”或“;”,则表示其输出是在同一行上。其后面的空的print语句用来消除前面的print语句一直在同一行上输出的效果,使其后面的输出是在下一行。
参考资料:print–百度百科
参考技术A一般的,简单的for循环可以打印出list的内容:
l=[1,2,3,4]
for i in l:
print(i)
若想得到以空格或逗号为分隔符的输出结果,代码可改为:
l=[1,2,3,4]
for i in l:
print(i,end=' ')#以空格为分隔符
输出结果为:1 2 3 4 (注意,此时4后面还有一个空格)。
l=[1,2,3,4]
for i in l:
print(i,end=', ')#以逗号为分隔符
那么如何才能在输出最后一个数字之后不输出分隔符,代码如下:
l = [1,2,3,4]
print(" ".join(str(i) for i in l))
输出结果为:1 2 3 4(注意,此时4后面没有空格)。
以逗号为分隔符。
l = [1,2,3,4]
print(",".join(str(i) for i in l))
输出结果为:1,2,3,4(注意,此时4后面没有逗号)。
扩展资料
print函数的其他用法:
1、格式化输出整数
python print也支持参数格式化,与C言的printf相似,
strHello = "the length of (%s) is %d" %('Hello World',len('Hello World'))
print strHello
#输出结果:the length of (Hello World) is 11
2、格式化输出16制整数
nHex = 0x20
#%x --- hex 十六进制
#%d --- dec 十进制
#%d --- oct 八进制
print "nHex = %x,nDec = %d,nOct = %o" %(nHex,nHex,nHex)
#输出结果:nHex = 20,nDec = 32,nOct = 40
#使用整数的各个制打印同一个数
3、格式化输出浮点数(float)
import math
#default
print "PI = %f" % math.pi
#width = 10,precise = 3,align = left
print "PI = %10.3f" % math.pi
#width = 10,precise = 3,align = rigth
print "PI = %-10.3f" % math.pi
#前面填充字符
print "PI = %06d" % int(math.pi)
#输出结果
#PI = 3.141593
#PI = 3.142
#PI = 3.142
#PI = 000003
#浮点数的格式化,精度、度和
参考资料:百度百科-python
参考技术B不太明白你的意思
打印列表?
>>> list = [1,2,3,4,5]>>> print list
[1, 2, 3, 4, 5]
打印列表的元素?
>>> for elem in list:... print elem
...
1
2
3
4
5
把列表作为字串打印?
>>> print repr(list)[1, 2, 3, 4, 5]本回答被提问者和网友采纳 参考技术C
直接使用print即可:
list1 = ['physics', 'chemistry', 1997, 2000];list2 = [1, 2, 3, 4, 5, 6, 7 ];
print ("list1[0]: ", list1[0])
print ("list2[1]: ", list2[1]) 参考技术D l = [1,2,3,4]
print(*l)
*l表示将l的各元素依次作为参数传递
这等价于print(1,2,3,4)
当然如果分隔符不是' '而是别的可以用sep参数指定,即
print(*l,sep='\n')
以上是关于VC中,ShellExecute函数如何用默认打印机打印?的主要内容,如果未能解决你的问题,请参考以下文章
VC中用ShellExecute等函数执行exe出现错误,但是鼠标双击就可以,这是为啥?