VB如何调用打印机窗口?

admin 0 2024-07-13

一、VB如何调用打印机窗口?

你参考下:

Option Explicit

Const FW_NORMAL = 400

Const DEFAULT_CHARSET = 1

Const OUT_DEFAULT_PRECIS = 0

Const CLIP_DEFAULT_PRECIS = 0

Const DEFAULT_QUALITY = 0

Const DEFAULT_PITCH = 0

Const FF_ROMAN = 16

Const CF_PRINTERFONTS = &H2

Const CF_SCREENFONTS = &H1

Const CF_BOTH = (CF_SCREENFONTS Or CF_PRINTERFONTS)

Const CF_EFFECTS = &H100&

Const CF_FORCEFONTEXIST = &H10000

Const CF_INITTOLOGFONTSTRUCT = &H40&

Const CF_LIMITSIZE = &H2000&

Const REGULAR_FONTTYPE = &H400

Const LF_FACESIZE = 32

Const CCHDEVICENAME = 32

Const CCHFORMNAME = 32

Const GMEM_MOVEABLE = &H2

Const GMEM_ZEROINIT = &H40

Const DM_DUPLEX = &H1000&

Const DM_ORIENTATION = &H1&

Const PD_PRINTSETUP = &H40

Const PD_DISABLEPRINTTOFILE = &H80000

Private Type POINTAPI

x As Long

y As Long

End Type

Private Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type

Private Type PAGESETUPDLG

lStructSize As Long

hwndOwner As Long

hDevMode As Long

hDevNames As Long

flags As Long

ptPaperSize As POINTAPI

rtMinMargin As RECT

rtMargin As RECT

hInstance As Long

lCustData As Long

lpfnPageSetupHook As Long

lpfnPagePaintHook As Long

lpPageSetupTemplateName As String

hPageSetupTemplate As Long

End Type

Private Type PRINTDLG_TYPE

lStructSize As Long

hwndOwner As Long

hDevMode As Long

hDevNames As Long

hDC As Long

flags As Long

nfromPage As Integer

nToPage As Integer

nMinPage As Integer

nMaxPage As Integer

nCopies As Integer

hInstance As Long

lCustData As Long

lpfnPrintHook As Long

lpfnSetupHook As Long

lpPrintTemplateName As String

lpSetupTemplateName As String

hPrintTemplate As Long

hSetupTemplate As Long

End Type

Private Type DEVNAMES_TYPE

wDriverOffset As Integer

wDeviceOffset As Integer

wOutputOffset As Integer

wDefault As Integer

extra As String * 100

End Type

Private Type DEVMODE_TYPE

dmDeviceName As String * CCHDEVICENAME

dmSpecVersion As Integer

dmDriverVersion As Integer

dmSize As Integer

dmDriverExtra As Integer

dmFields As Long

dmOrientation As Integer

dmPaperSize As Integer

dmPaperLength As Integer

dmPaperWidth As Integer

dmScale As Integer

dmCopies As Integer

dmDefaultSource As Integer

dmPrintQuality As Integer

dmColor As Integer

dmDuplex As Integer

dmYResolution As Integer

dmTTOption As Integer

dmCollate As Integer

dmFormName As String * CCHFORMNAME

dmUnusedPadding As Integer

dmBitsPerPel As Integer

dmPelsWidth As Long

dmPelsHeight As Long

dmDisplayFlags As Long

dmDisplayFrequency As Long

End Type

Private Declare Function PrintDialog Lib "comdlg32.dll" Alias "PrintDlgA" (pPrintdlg As PRINTDLG_TYPE) As Long

Private Declare Function PAGESETUPDLG Lib "comdlg32.dll" Alias "PageSetupDlgA" (pPagesetupdlg As PAGESETUPDLG) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long

Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long

Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long

Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long

Private Sub Command1_Click()

ShowPrinter Me

End Sub

Private Sub Command2_Click()

ShowPageSetupDlg

End Sub

Private Sub Form_Load()

Command1.Caption = "ShowPrinter"

Command2.Caption = "ShowPageSetupDlg"

End Sub

Private Function ShowPageSetupDlg() As Long

Dim m_PSD As PAGESETUPDLG

m_PSD.lStructSize = Len(m_PSD)

m_PSD.hwndOwner = Me.hWnd

m_PSD.hInstance = App.hInstance

m_PSD.flags = 0

If PAGESETUPDLG(m_PSD) Then

ShowPageSetupDlg = 0

Else

ShowPageSetupDlg = -1

End If

End Function

Public Sub ShowPrinter(frmOwner As Form, Optional PrintFlags As Long)

Dim PrintDlg As PRINTDLG_TYPE

Dim DevMode As DEVMODE_TYPE

Dim DevName As DEVNAMES_TYPE

Dim lpDevMode As Long, lpDevName As Long

Dim bReturn As Integer

Dim objPrinter As Printer, NewPrinterName As String

PrintDlg.lStructSize = Len(PrintDlg)

PrintDlg.hwndOwner = frmOwner.hWnd

PrintDlg.flags = PrintFlags

On Error Resume Next

DevMode.dmDeviceName = Printer.DeviceName

DevMode.dmSize = Len(DevMode)

DevMode.dmFields = DM_ORIENTATION Or DM_DUPLEX

DevMode.dmPaperWidth = Printer.Width

DevMode.dmOrientation = Printer.Orientation

DevMode.dmPaperSize = Printer.PaperSize

DevMode.dmDuplex = Printer.Duplex

On Error GoTo 0

PrintDlg.hDevMode = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(DevMode))

lpDevMode = GlobalLock(PrintDlg.hDevMode)

If lpDevMode > 0 Then

CopyMemory ByVal lpDevMode, DevMode, Len(DevMode)

bReturn = GlobalUnlock(PrintDlg.hDevMode)

End If

With DevName

.wDriverOffset = 8

.wDeviceOffset = .wDriverOffset + 1 + Len(Printer.DriverName)

.wOutputOffset = .wDeviceOffset + 1 + Len(Printer.Port)

.wDefault = 0

End With

With Printer

DevName.extra = .DriverName & Chr(0) & .DeviceName & Chr(0) & .Port & Chr(0)

End With

PrintDlg.hDevNames = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len(DevName))

lpDevName = GlobalLock(PrintDlg.hDevNames)

If lpDevName > 0 Then

CopyMemory ByVal lpDevName, DevName, Len(DevName)

bReturn = GlobalUnlock(lpDevName)

End If

If PrintDialog(PrintDlg) <> 0 Then

lpDevName = GlobalLock(PrintDlg.hDevNames)

CopyMemory DevName, ByVal lpDevName, 45

bReturn = GlobalUnlock(lpDevName)

GlobalFree PrintDlg.hDevNames

lpDevMode = GlobalLock(PrintDlg.hDevMode)

CopyMemory DevMode, ByVal lpDevMode, Len(DevMode)

bReturn = GlobalUnlock(PrintDlg.hDevMode)

GlobalFree PrintDlg.hDevMode

NewPrinterName = UCase$(Left(DevMode.dmDeviceName, InStr(DevMode.dmDeviceName, Chr$(0)) - 1))

If Printer.DeviceName <> NewPrinterName Then

For Each objPrinter In Printers

If UCase$(objPrinter.DeviceName) = NewPrinterName Then

Set Printer = objPrinter

End If

Next

End If

On Error Resume Next

Printer.Copies = DevMode.dmCopies

Printer.Duplex = DevMode.dmDuplex

Printer.Orientation = DevMode.dmOrientation

Printer.PaperSize = DevMode.dmPaperSize

Printer.PrintQuality = DevMode.dmPrintQuality

Printer.ColorMode = DevMode.dmColor

Printer.PaperBin = DevMode.dmDefaultSource

On Error GoTo 0

End If

End Sub

张志晨

二、Formlabs3D打印机怎么设置手机连接?

01

在手机APP设备管理页面,找到【配置wifi】并点击。

02

长按按键6秒,打印机进入配置wifi模式,打印出小纸条作为提醒。

03

配置wifi第一步:输入当前可以联网的wifi账号和密码。

04

配置wifi第二步:去到手机网络连接页面,把网络连接的wifi切换为打印机的热点,以M****开头的那个。

05

配置wifi第三步:返回到手机APP页面自动跳转页面,然后点击【开始配置】,约等待2秒,系统提示配置成功。

二、打印机场景应用扩展阅读

01

外卖小程序订单小票:开发商可以用来对接自己的外卖小程序系统,因为现在小程序开放打印功能了,具体对接流程也很简单,上传开发文档至api接口,然后调试,测试,打印小票,对接成功,OK。

02

微信订餐/点餐外卖小票:可以被用来对接微信订餐/点餐系统,对接流程同上,上传开发文档然后调试、测试、打印机出票,对接成功。

03

手机照片/图片/文字:通过手机APP,添加想要打印的照片,然后直接打印,也可以打印照片和文字混合的,字体可调节大小。

04

外卖平台订单小票:通过手机APP绑定授权外卖平台,如果想要实现自动接单打印,开启后台自动打印开关即可,如果开启自动接单一定要也开启订单提醒,也就是用户订餐之后再退单,打印机会打印出退单小票。

三,智能手机如何控制打印机

01

在编辑框中输入想要打印的文字,也可以直接粘贴复制,然后选择字体大小,自定义编辑。

02

点击预览【打印】,打印机就会打印出你编辑的文字。

03

添加打印手机相册内的照片或者图片,选择好模式之后,点击右上角的【打印】。

04

还可以通过手机打印涂鸦、文字转化二维码、素材库、简笔画、表情包等等,打印方法同上。

05

在手机软件中的【商家服务】登陆外卖平台商家账号,后台设置“自动接单”、“来单提醒”功能,当有点餐顾客下单后,打印机自动出单。

为什么施工图都是蓝图呢?
3d打印精度最高是多少?
相关文章