怎么得到默认打印机?

plpq 2003-02-14 09:25:16
要在一个combo里显示打印机,要求一开始combo里显示的是默认打印机,别的打印机
在下拉列表里(list),请问高手如何做到?
...全文
67 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxianzhi 2003-04-16
  • 打赏
  • 举报
回复
我发现我的机器上
"System\CurrentControlSet\Control\Print\Printers"
内容为空!而我安装有4种打印机!
vbangle 2003-04-02
  • 打赏
  • 举报
回复
在窗口上放一个按钮,将下面代码全部粘贴到代码部分,可返回默认打印机名。

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwReserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName$, ByVal lpdwReserved As Long, lpdwType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long

Const HKEY_CURRENT_CONFIG As Long = &H80000005

Sub Command1_Click()
Dim GetCurrPrinter As String
Dim PName As String
GetCurrPrinter = RegGetString$(HKEY_CURRENT_CONFIG, "System\CurrentControlSet\Control\Print\Printers", "Default")
PName = GetCurrPrinter
MsgBox PName
End Sub
Function RegGetString$(hInKey As Long, ByVal subkey$, ByVal valname$)

Dim RetVal$, hSubKey As Long, dwType As Long, SZ As Long
Dim R As Long
RetVal$ = ""
Const KEY_ALL_ACCESS As Long = &HF0063
Const ERROR_SUCCESS As Long = 0
Const REG_SZ As Long = 1
R = RegOpenKeyEx(hInKey, subkey$, 0, KEY_ALL_ACCESS, hSubKey)
If R <> ERROR_SUCCESS Then GoTo Quit_Now
SZ = 256: v$ = String$(SZ, 0)
R = RegQueryValueEx(hSubKey, valname$, 0, dwType, ByVal v$, SZ)
If R = ERROR_SUCCESS And dwType = REG_SZ Then
RetVal$ = Left$(v$, SZ - 1)
Else
RetVal$ = "--Not String--"
End If
If hInKey = 0 Then
R = RegCloseKey(hSubKey)
End If
Quit_Now:
RegGetString$ = RetVal$
End Function
用户 昵称 2003-04-02
  • 打赏
  • 举报
回复
Dim Prntr As Printer
For Each Prntr In Printers
If Prntr.Orientation = vbPRORPortrait Then
Set Printer = Prntr
Exit For
End If
Next
lihonggen0 2003-04-02
  • 打赏
  • 举报
回复
***************打印机***************************
取得打印机:
If Printers.Count < 1 Then
MsgBox "系统没有安装打印机!", vbCritical, App.Title
Unload Me
Exit Sub
End If

Dim Prns As Printer
For Each Prns In Printers
List1.AddItem Prns.DeviceName
Next
List1.ListIndex = 0

设定默认打印机:
Set Printer = Printers(List1.ListIndex)
spidertan 2003-04-02
  • 打赏
  • 举报
回复
自己搜索以下“打印机”会有很多答案的
plpq 2003-02-18
  • 打赏
  • 举报
回复
我想得到的是计算机里默认打印机,而
不是把某一打印机设为默认打印机。
chenyu5188 2003-02-14
  • 打赏
  • 举报
回复
例如,想查出哪种可用打印机使用特定的打印机驱动程序。下列代码对所有可用打印机进行搜索,对第一个打印机定位,并将其走纸方向设置为纵向,然后将打印机设置为缺省打印机:

Dim X As Printer
For Each X In Printers
If X.Orientation = vbPRORPortrait Then
'将打印机设置为系统缺省的打印机。
Set Printer = X
'停止寻找打印机。
Exit For
End If
Next

可以用 Set 语句将 Printers 集合中的一种打印机设置为缺省打印机。上例中将对象变量 X 所标识的打印机指定为应用程序的缺省打印机。
plpq 2003-02-14
  • 打赏
  • 举报
回复
我想得到的是控制面板里默认的打印机!
yefm 2003-02-14
  • 打赏
  • 举报
回复
Printer 对象和 Printers 集合


使用 Printer 对象可以实现与系统打印机的通讯(最初是缺省系统打印机)。

用 Printers 集合可获取有关系统上所有可用打印机的信息。

语法

Printer

Printers(index)

index 所在处表示从 0 到 Printers.Count-1 之间的整数。

说明

用图形方法在 Printer 对象上绘制文本和图形。一旦 Printer 对象中含有将要打印的输出信息,可用 EndDoc 方法直接将输出信息送到应用程序的缺省打印机上。

如果要打印这些信息,应该检查和可能还要修正窗体的布局。例如,如果用 PrintForm 方法打印窗体,则到页底图形图象可能被剪切,而文本则被移到下一页。

Printers 集合可用来查询可用的打印机,这样就可以为应用程序指定一台缺省打印机。例如也许要找出哪些可用打印机用了指定的打印驱动程序。下面的代码查找所有的可用打印机,定位在第一个将页码方向设置为纵向的打印机,然后将其设置为 Portrait。

Dim X As Printer
For Each X In Printers
If X.Orientation = vbPRORPortrait Then
'设定为系统缺省打印机。
Set Printer = X
' 终止查找打印机。
Exit For
End If
Next

用 Set 语句指定 Printers 集合中的某一打印机为缺省打印机。前面的示例指定由对象变量 X 标识的打印机为应用程序的缺省打印机。

注意 如果用 Printers 集合来确定某一特定打印机,如 Printers(3),则只能访问只读属性。如果想访问个别打印机的可读写属性,那么首先要使那个打印机成为应用程序的缺省打印机。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧