找回密码
 加入
搜索
查看: 8909|回复: 15

[系统综合] [已解决]求助。如何设定默认打印机?

 火.. [复制链接]
发表于 2010-7-15 13:16:28 | 显示全部楼层 |阅读模式
本帖最后由 ac5474012 于 2010-7-27 09:09 编辑

我想让默认打印机在两个打印机之间切换,

请问如何检查并更改默认打印机?
发表于 2010-7-15 14:49:14 | 显示全部楼层
设置本地计算上当前用户的默认打印机


#Include <WinAPI.au3>
_WinAPI_SetDefaultPrinter($sPrinter)

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-7-15 17:07:37 | 显示全部楼层
设置本地计算上当前用户的默认打印机


#Include
_WinAPI_SetDefaultPrinter($sPrinter)
lynfr8 发表于 2010-7-15 14:49


$sPrinter,这是打印机名称把?请问如何判断现在的默认打印机是那一台?
发表于 2010-7-15 17:45:06 | 显示全部楼层
本帖最后由 afan 于 2010-7-15 17:46 编辑
#include <WinAPIEx.au3>
msgbox(0, '默认打印机', _WinAPI_GetDefaultPrinter())

评分

参与人数 1贡献 +1 收起 理由
lynfr8 + 1

查看全部评分

发表于 2010-7-15 18:02:45 | 显示全部楼层
http://support.microsoft.com/kb/156212/zh-cn
$printername = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device")
MsgBox(4096, "默认打印机-详细信息:", $printername )

如果仅仅是为了获取打印机名称,通过StringSplit 字符串控制轻易做到

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

发表于 2010-7-15 18:12:56 | 显示全部楼层
学习了,我是通过ObjCreate("WScript.Network") 来实现的:
http://www.autoitx.com/thread-14694-1-1.html

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

发表于 2010-7-15 18:48:34 | 显示全部楼层
顺势做了个小工具~
#include <WinAPI.au3>

GUICreate('切换默认打印机', 380, 70)
GUICtrlCreateLabel('默认打印机:', 10, 15, 90, 17)
$combo = GUICtrlCreateCombo('', 85, 10, 210, 20, 0x0003) ; $CBS_DROPDOWNLIST=0x0003
GUICtrlSetData(-1, EnumPrinter())
GUICtrlSetData(-1, GetDefaultPrinterName())
$Button = GUICtrlCreateButton('应用(&Y)', 295, 9, 70, 22)
GUISetState()

While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
                Case $Button
                        $sPrinter = GUICtrlRead($combo)
                        _WinAPI_SetDefaultPrinter($sPrinter)
                        If GetDefaultPrinterName() = $sPrinter Then MsgBox(64, '完成', '设置成功~ ')
        EndSwitch
WEnd

Func EnumPrinter()
        Local $data = '', $i = 1, $Val
        While 1
                $Val = RegEnumVal('HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices', $i)
                If @error <> 0 Then ExitLoop
                $data &= $Val & '|'
                $i += 1
        WEnd
        Return $data
EndFunc   ;==>EnumPrinter

Func GetDefaultPrinterName()
        Return StringRegExpReplace(RegRead('HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows', 'Device'), '(.+?),.+', '$1')
EndFunc   ;==>GetDefaultPrinterName

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 2金钱 +60 收起 理由
kodin + 50 正好公司能用到,我静悄悄的拿去用了,谢谢 ...
xianhou + 10 随心而写,高!

查看全部评分

 楼主| 发表于 2010-7-15 21:26:57 | 显示全部楼层
...好多人回帖,我好感动。我这就试试去。
发表于 2010-8-24 22:47:44 | 显示全部楼层
学习到许多东西,谢谢
发表于 2010-8-25 12:20:00 | 显示全部楼层
7楼的代码精彩
发表于 2010-8-29 06:45:48 | 显示全部楼层
记下一个记号,以后用着。
发表于 2010-10-5 18:20:26 | 显示全部楼层
回复 7# afan

这个不错,学习中
发表于 2010-10-15 09:28:37 | 显示全部楼层
各位楼主辛苦了,感谢分享。
发表于 2010-10-15 09:37:33 | 显示全部楼层
嘿嘿,学习学习,做个记号!
发表于 2010-10-15 19:39:10 | 显示全部楼层
一题多解,很好的气氛。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 15:31 , Processed in 0.084581 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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