Erstellen eines Druckerfensters

  • Hallo Zusammen

    Ich möchte mit AutoIt ein Fenster erstellen, in dem der Benutzer aus einem Pulldown Menu aus einem der installierten Windowsdrucker auswählen kann. Durch betätigen des "OK-Butrtons" wird ein pdf auf den ausgewählten Drucker geschickt.
    Hat jemand eine Idee, wie ich dies umsetzten könnte?

    Danke im Voraus,

    Schaegu

    • Offizieller Beitrag

    Hi,

    hier schon mal der Anfang für die Drucker:

    [autoit]

    $hService = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & "\\" & @ComputerName & "\root\cimv2")
    $sPrinterList = $hService.ExecQuery ("Select * From Win32_Printer")
    ConsoleWrite('$sPrinterList.count = ' & $sPrinterList.count & @lf)
    For $sPrinter In $sPrinterList
    ConsoleWrite('$sPrinter.name = ' & $sPrinter.name & @LF)
    Next

    [/autoit]

    So long,

    Mega

  • Hallo Mega

    Danke für deine Antwort. Nun, als AutoIT Neuling habe ich deinen Code einfach mal in AutoIT laufen gelassen. Das Ganze endet mit der Fehlermeldung:

    >AU3Check Ended. No Error(s).
    >Running: (3.1.1.0):C:\Programme\AutoIt3\autoit3.exe "Z:\Programmieren\AutoIt\Beispiele\druckerauswahl.au3"
    Z:\Programmieren\AutoIt\Beispiele\druckerauswahl.au3 (14) : ==> Unable to parse line.:
    $sPrinterList = $hService.ExecQuery ("Select * From Win32_Printer")
    $sPrinterList = $hService.E^ ERROR
    >AutoIT3.exe ended.
    >Exit code: 0 Time: 0.823

    Was mache ich falsch. Vorallem arbeitest du ja mit SQL Befehlen (Select...). Wie ist dies unter Windows einfach so möglich?

    Es grüsst,

    Sascha

  • Hallo Peethebee

    Mit der neuen Version hat es einwandfrei funktioniert, danke. Nun müsste ich die gefundenen Drucker irgendwie in das Combo reinbringen.

    Wie kann ich nun die "item1", "item2", etc durch die Drucker ersetzen?

    $n1=GUICtrlCreateCombo ("item1", 20,10,150)

    GUICtrlSetData(-1,"item2|item3")

    Danke im Voraus,

    Sascha

    • Offizieller Beitrag

    Hi,

    versuch mal:

    [autoit]


    Global $hService = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & "\\" & @ComputerName & "\root\cimv2")
    Global $sPrinterList = $hService.ExecQuery ("Select * From Win32_Printer")
    Global $drucker
    For $sPrinter In $sPrinterList
    $drucker &= $sPrinter.name & "|"
    Next

    [/autoit][autoit][/autoit][autoit]

    #include <GUIConstants.au3>
    GUICreate("My GUI combo") ; will create a dialog box that when displayed is centered
    GUICtrlCreateCombo($sPrinterList.count, 10, 10) ; create first item
    GUICtrlSetData(-1, $drucker)
    GUISetState()
    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]

    So long,

    Mega