设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 6663|回复: 23
打印 上一主题 下一主题

[API] 选择默认打印机的问题

[复制链接]
跳转到指定楼层
1#
发表于 2012-2-11 20:12:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


我的附件是一个可以列出默认打印机并选择默认打印机的程序模块和一个窗体.

已经可以实用.
可是还不够完善.我目前只能做到重启access来达到改动默认打印机的目的.能否可以做到不需要重启就能修改到?我对windows script host的理解还不行.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-2-12 00:42:14 | 只看该作者
给你做了些简化,还是睡觉了,没有细细去看不知道符合效果否

窗体部分
  1. Private Sub Combo75_AfterUpdate()
  2.    Call DefaultPrinter(Me.Combo75.Text)
  3. End Sub

  4. Private Sub Form_Open(Cancel As Integer)
  5.     Me.Combo75.RowSourceType = "Value List"
  6.    Me.Combo75.RowSource = GetPrinters
  7.    Me.Combo75 = prtDefaultIndex
  8. End Sub
复制代码
模块部分
  1. Public prtDefaultIndex As Long

  2. Public Function DefaultPrinter(PrinterName)

  3.     Dim Ofs As IWshNetwork_Class
  4.     Set Ofs = New IWshNetwork_Class
  5.     Ofs.SetDefaultPrinter (PrinterName)
  6.     DefaultPrinter = True

  7. End Function

  8. Public Function GetPrinters() As String
  9.     Dim i As Integer
  10.    
  11.     For i = 0 To Application.Printers.Count - 1
  12.         GetPrinters = GetPrinters & ";" & i & "," & Application.Printers(i).DeviceName
  13.         
  14.         If Application.Printer.DeviceName = Application.Printers(i).DeviceName Then
  15.             prtDefaultIndex = i
  16.         End If
  17.         
  18.     Next i

  19.     GetPrinters = Mid(GetPrinters, 2)

  20. End Function
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
 楼主| 发表于 2012-2-12 05:12:10 | 只看该作者
我试过了,不行.还是需要重启access
4#
 楼主| 发表于 2012-2-13 06:37:46 | 只看该作者
这个我试过了,在access没有关闭重启以前还是不能真正改动到默认打印机.
5#
 楼主| 发表于 2012-2-13 06:58:20 | 只看该作者
因为我没法不重启access改默认打印机所以我在网上找了一个access重启模块加上去,在打印机重启组合框的update后事件调用重启模块进行重启.
不过我还是希望不重启就可以真正改到默认打印机.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

6#
发表于 2012-2-13 09:49:59 | 只看该作者
1楼的代码改成这样就可以了:

Private Sub Combo75_AfterUpdate()
DoCmd.Hourglass True
   DefaultPrinter (Me.Combo75)
DoCmd.Hourglass False

Dim prtDefault As Printer
Set Application.Printer = Application.Printers(CStr(Me.Combo75))
Set prtDefault = Application.Printer

End Sub
7#
发表于 2012-2-13 09:55:10 | 只看该作者
不知道你是要改变系统的默认打印机还是改变ACC默认的打印机?
8#
 楼主| 发表于 2012-2-13 10:12:11 | 只看该作者
kangking 发表于 2012-2-13 12:55
不知道你是要改变系统的默认打印机还是改变ACC默认的打印机?

系统的.
9#
发表于 2012-2-13 10:28:32 | 只看该作者
奇怪我用了,都不需要重启啊
10#
发表于 2012-2-13 10:29:03 | 只看该作者
你之前的确实是需要重启,我修改过后我这里一点就行,不需要重启
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-20 02:15 , Processed in 0.097783 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表