Anzahl der Kopien auslesen aus Druckdialog (drucken mit printMGv2.au3​)

  • Hallo Zusammen,

    um aus meinen AutoIt Scripten Ausdrucke zu erstellen verwende ich die printMGv2.au3.

    Für ein aktuelles Projekt muss ich jedoch aus dem Druckdialog, welcher mit der Funktion _PrintSetPrinter aufgerufen wird, die Anzahl der dort vorgegebenen Kopien ermitteln um dann über _PrintStartPrint(Handle,Anzahl) die Anzahl der Kopien zu drucken:

    Hat jemand von euch vielleicht einen Tipp für mich, wie ich die Anzahl aus dem Dialog auslesen kann?

    Für eure Hilfe wie immer besten Dank!

    Viele Grüße

    TheDude

    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    [Cicero, Philippica 12,2]

  • Versuch mal ob du das Feld ggf. mit ControlGetText bekommen kannst (die ID etc. kannst du evtl mit der Au3Info.exe bekommen (liegt im Autoit Ordner).

    Aber mal nebenbei, wenn du diesen Dialog startest, definierst du dann nicht dabei auch gleich den Wert den du gerade versuchst auszulesen?

  • Hallo Moombas,

    ... leider nein, per Default steht dort immer eine "1". Der Anwender ändert dann den Wert auf die Anzahl der Kopien, die er benötigt.

    Die Au3Info.exe wäre noch ein Weg, ja. Ich hatte allerdings die Hoffnung, das die UDF da eine Möglichkeit bietet, die ich nur einfach noch nicht gefunden habe.

    Viele Grüße

    TheDude

    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    [Cicero, Philippica 12,2]

  • Hi Moombas,

    ... das ist ja cool! Danke Dir. :thumbup:

    Jetzt bräuchte ich nur noch den Namen des ausgewählten Druckers damit ich im weiteren Verlauf des Scripts auf den richtigen Drucker drucken kann. ;)

    Hättest Du hierzu evtl. auch noch einen Tipp?

    Danke vorab,

    viele Grüße

    TheDude

    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    [Cicero, Philippica 12,2]

  • ... das kannte ich tatsächlich schon. :)

    Was ich allerdings bräuchte ist der Name des Druckers, der im Dialog ausgewählt wurde. Das muss ja nicht unbedingt der Standard-Drucker sein. Die Anzahl der zu druckenden Seiten gibt das STRUCT ja wieder, aber interessant wäre eben auch der Name.

    In der Folge lese ich dann von diesem Gerät über den Namen alle möglichen Dinge aus wie Auflösung, Seitengröße, etc.

    Viele Grüße

    Thomas

    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    [Cicero, Philippica 12,2]

  • Dann wüsste ich das nur über was ich in Post #2 geschrieben habe:

    Zitat

    Versuch mal ob du das Feld ggf. mit ControlGetText bekommen kannst (die ID etc. kannst du evtl mit der Au3Info.exe bekommen (liegt im Autoit Ordner).

    Auch einfach aus dem Grund, das dieser Wert ja nirgends gespeichert wird, sondern nur im aktuellen Dialog gewählt wird und die Daten danach ausliest und anzeigt (also fast das gleiche was du auch machen möchtest).

  • Moin,

    wenn Du die Funktion _WinAPI_PrintDlgEx() verwendest, siehst Du im Beipiel in der Doku, wie man den Namen des gewählten Druckers auslesen kann:

    Code
    ...
            Local $hDevNames = DllStructGetData($tPRINTDLGEX, 'hDevNames')
            Local $pDevNames = _MemGlobalLock($hDevNames)
            Local $tDEVNAMES = DllStructCreate($tagDEVNAMES, $pDevNames)
            ConsoleWrite('Printer: ' & _WinAPI_GetString($pDevNames + 2 * DllStructGetData($tDEVNAMES, 'DeviceOffset')))
    ...
  • Hi Velted,

    ... argh - stimmt. Das habe ich total übersehen. :Face:

    Dann werde ich diesen Ansatz mal umsetzen. :)

    Besten Dank für eure Hilfe!

    Viele Grüße

    TheDude

    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    [Cicero, Philippica 12,2]