ac5474012 发表于 2010-7-15 13:16:28

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

本帖最后由 ac5474012 于 2010-7-27 09:09 编辑

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

请问如何检查并更改默认打印机?

lynfr8 发表于 2010-7-15 14:49:14

设置本地计算上当前用户的默认打印机


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

ac5474012 发表于 2010-7-15 17:07:37

设置本地计算上当前用户的默认打印机


#Include
_WinAPI_SetDefaultPrinter($sPrinter)
lynfr8 发表于 2010-7-15 14:49 http://www.autoitx.com/images/common/back.gif

$sPrinter,这是打印机名称把?请问如何判断现在的默认打印机是那一台?

afan 发表于 2010-7-15 17:45:06

本帖最后由 afan 于 2010-7-15 17:46 编辑


#include <WinAPIEx.au3>
msgbox(0, '默认打印机', _WinAPI_GetDefaultPrinter())

lynfr8 发表于 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 字符串控制轻易做到

boyhong 发表于 2010-7-15 18:12:56

学习了,我是通过ObjCreate("WScript.Network") 来实现的:
http://www.autoitx.com/thread-14694-1-1.html

afan 发表于 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

ac5474012 发表于 2010-7-15 21:26:57

...好多人回帖,我好感动。我这就试试去。

saruman 发表于 2010-8-24 22:47:44

学习到许多东西,谢谢

4216730 发表于 2010-8-25 12:20:00

7楼的代码精彩

dajun 发表于 2010-8-29 06:45:48

记下一个记号,以后用着。

hbp555 发表于 2010-10-5 18:20:26

回复 7# afan

这个不错,学习中

6678720 发表于 2010-10-15 09:28:37

各位楼主辛苦了,感谢分享。

3131806 发表于 2010-10-15 09:37:33

嘿嘿,学习学习,做个记号!

xianhou 发表于 2010-10-15 19:39:10

一题多解,很好的气氛。
页: [1] 2
查看完整版本: [已解决]求助。如何设定默认打印机?