找回密码
 加入
搜索
查看: 1801|回复: 1

[AU3基础] 如何实现自动打开“打印机和传真”这个界面并选择一个指定的打印机

[复制链接]
发表于 2011-8-3 14:57:14 | 显示全部楼层 |阅读模式
Run("RUNDLL32 SHELL32.DLL,SHHelpShortcuts_RunDLL PrintersFolder")
Run("rundll32 printui.dll,PrintUIEntry /y /n '打印机名'")


因为无法回复,所以开了个贴!
发表于 2011-8-3 18:34:27 | 显示全部楼层
刚才看到你原来的帖子了,我想你可能把问题复杂化了,你看能不能这样,把同一文档发给不同打印机这件事,转换成:打印文档,然后切换默认打印机,然后再打印文档。

至于切换打印机,以及查询现有打印机,请参考Afan大大的代码,如下:
#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
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-14 14:20 , Processed in 0.073224 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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