文档介绍:VB中打印机选择
(1)
MONDIALOG控件叫CMDiag
用如下代码可以使你选择的打印机成为默认打印机"Printer"
OnErrorResumeNext
=True
=True
<>0ThenExitSub
(2)
VB里面,原本改变预设打印机的方法是:(假设安装有两种打印机(驱动程式))SetPrinter=Printers(0)'将预设打印机设定成第一种打印机
SetPrinter=Printers(1)'将预设打印机设定成第二种打印机
但实际上以上叙述有时候不会成功(原因不详),为了能够成功地改变预设打印机,以下是呼叫WindowsAPI的方法:(此一解决方案适用於Windows95,98)
:
ConstHWND_BROADCAST=&HFFFF&
ConstWM_WININICHANGE=&H1A
PrivateDeclareFunctionGetProfileStringLib"kernel32"Alias_
"GetProfileStringA"(ByVallpAppNameAsString,ByVallpKeyNameAs_String,ByVallpDefaultAsString,ByVallpReturnedStringAsString,_ByValnSizeAsLong)AsLong
PrivateDeclareFunctionWriteProfileStringLib"kernel32"Alias_
"WriteProfileStringA"(ByVallpszSectionAsString,ByVallpszKeyName_AsString,ByVallpszStringAsString)AsLong
PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
:
PrinterName="您想设定的打印机名称"
DimSAsString,lengthAsLong,hKeyAsLong
S=String(80,Chr(0))
length=GetProfileString("devices",PrinterName,"",S,Len(S))
S=Left(S,length)
CallWriteProfileString("windows","device",PrinterName&","&S)_
CallSendMessage(HWND_BROADCAST,
NT预设打印机的方法,
Value是:WM_WININICHANGE,&H7FFF&,ByVal"windows")至於改变则是改变登录资料库(Registry)打印机的设定,在登录资料库中纪录预设打印机的
HKEY_CURRENT_USER
\Software\Microsoft\WindowsNT\CurrentVersion\Windows
(3)VB中获取指定打印机的各种纸张类型及大小subkey的Devicevalue
放入一个MSFlexGrid,名称为fgd1,列数为4
'OptionExplicit
PrivateConstDC_MAXEXTENT=5
PrivateConstDC_MINEXTENT=4
PrivateConstDC_PAPERNAMES=16
PrivateConstDC_PAPERS=2
PrivateConstDC_PAPERSIZE=3
PrivateDeclareFunctionDeviceCapabilitiesLib""Alias"DeviceCapabilitiesA"(ByVallpDeviceNameAsString,ByVallpPortAsString,ByValiIndexAsLong,lpOutputAsAny,lpDevModeAsAny)AsLongPrivateTypePOINTS
xAsLong
yAsLong
EndType
PrivateSubForm_Load()
DimiAsLong
Wi