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);

使用ShellExecute打印,它会通过文件扩展名调用默认的打开程序进行打印。
换句话说,如果是doc文档,就会使用word打印,你的参数为SHOW,还可以看到一个word的打开过程(会自动关闭)。
而不使用默认打印机,就是因为要打印的文档或者文件关联程序指定了使用的打印机(这个和文件格式有关,比如doc文件格式中,是可以指定打印机的),所以,如果没有指定,那么一定会使用默认打印机,而不使用默认,和程序无关(也管理不了),只能看是文档问题还是关联程序问题。追问

我现在是想打印本地的PDF文档,原来的命令是ShellExecute(NULL,"print",fileSavePathName,NULL,NULL,SW_HIDE);那照你的说法,是不是我先用某台打印机打印过一次,后面我设置另一台打印机作为默认的,再调用ShellExecute命令打印,它还是只能在原先的打印机上打印?这个问题是不是没办法解决了?还有没有别的API能实现上述打印功能啊?

追答

ShellExecute是“抛出式”的命令,本身没有对打印机设置的功能,使用哪个打印机,程序干预不了。
据我所知,API的方式只能是抛出打印,无法控制,但你所说问题我觉得还是和软件有关,正常就是使用默认打印机的。
另外,可以使用ActiveX的方式,将PDF文档在程序中打开并打印,这个可以实现程序内的打印机设置和各种打印控制。当然,这种方法稍微复杂,而且你程序改动会比较大。

参考技术A 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参数指定的文件夹。
参考技术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出现错误,但是鼠标双击就可以,这是为啥?

如何用js代码设置默认打印机

ShellExecute API函数用法简析

VC++中如何用tab选中单选框控件?

VC中CDialogBox,停靠时,如何用鼠标拖动边框来改变大小

如何用VC编写dll文件