INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Druckeroptionen setzen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

19.08.2011, 06:59
Beitrag #1

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
Druckeroptionen setzen
Guten Tag

Ich versuche momentan die Druckoption für doppelseitiges drucken programmatisch einzustellen.
Da LabVIEW selbst keine Funktion dafür bietet (hab zumindest keine gefunden...) habe ich mich mal mit den .NET Funktionen beschäftigt. Den Druckdialog (Windows.Forms(2.0.0.0).PrintDialog) so voreinzustellen und anzuzeigen funktioniert problemlos -> Problem gelöst könnte man meinen, leider wird bei uns ein spezieller Druck-Dialog aufgerufen über welchen man zusätzliche Elemente im Ausdruck hinzufügen kann...

Meine Frage ist nun, ob es möglich ist quasi das ablaufen zu lassen, was passiert wenn ich beim Windows-Drucker Dialog auf ok drücke. Die Printer-Settings kann ich ohne Probleme setzen.
Bzw. Die Einstellungen der Drucksettings ohne den Dialog setzen zu können...

Vielen Dank für eure Hilfe

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.09.2011, 13:52
Beitrag #2

A.Berndsen Offline
LVF-Team
LVF-Team

Beiträge: 2.437
Registriert seit: Feb 2005

8.2.1 - 2011
2004
DE

724xx
Deutschland
RE: Druckeroptionen setzen
Hallo Marc,

der Thread ist schon ein paar Tage alt.
So ganz habe ich Dein Problem nicht verstanden.
Die Einstellungen für den Druckdialog die hast Du über .NET eingestellt.
Dann mußt Du nur noch den Druck anstoßen.
Oder wo habe ich etwas übersehen in Deiner Schilderung.

Grüße
Andreas

Geht nicht, gibts nicht!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2011, 07:40 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2011 07:44 von M Nussbaumer.)
Beitrag #3

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Druckeroptionen setzen
(02.09.2011 13:52 )A.Berndsen schrieb:  Hallo Marc,

der Thread ist schon ein paar Tage alt.
So ganz habe ich Dein Problem nicht verstanden.
Die Einstellungen für den Druckdialog die hast Du über .NET eingestellt.
Dann mußt Du nur noch den Druck anstoßen.
Oder wo habe ich etwas übersehen in Deiner Schilderung.

Grüße
Andreas

Mein Problem ist, dass wir einen LabVIEW-Druckdialog verwenden, welcher an spezielle Userwünsche angepasst wurde.
Daher kann ich diesen leider nicht mit dem .NET-Druckdialog ersetztenDry
Nun kann man ja die Druckoptionen für den .NET-Druckdialog bereits vor Aufruf setzten, diese Optionen möchte
ich nun übernehmen für den nächsten Druck ohne den .NET-Dialog aufrufen zu müssen. Das Problem ist, dass die Optionen ohne Aufruf des .NET-Dialogs nicht übernommen werden... bzw ich nicht weiss wie ich es ohne den blöden .NET-Dialog machen sollSad

Ganz konkret geht es mir darum, dass ich dem Drucker sagen kann, dass er den nächsten Druckauftrag doppelseitig drucken soll...
Drucker-API ansprechen wäre auch keine Lösung, da wir Drucker von verschiedenen Marken verwenden...

Hoffe ich konnte das ganze irgendwie verständlich rüberbringenConfused

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2011, 11:09
Beitrag #4

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
RE: Druckeroptionen setzen
Hallo Marc,
vielleicht kommst Du mit einem .Net Constructor aus System.Printing (3.0.0.0) weiter.

Gruß
Ralf


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2011, 15:14 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2011 15:16 von M Nussbaumer.)
Beitrag #5

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Druckeroptionen setzen
(05.09.2011 11:09 )rasta schrieb:  Hallo Marc,
vielleicht kommst Du mit einem .Net Constructor aus System.Printing (3.0.0.0) weiter.

Gruß
Ralf

Danke für den Hinweis, genau die Parameter muss ich einstellen können!
Nun weiss ich leider nicht wie ich die neuen Einstellungen an den Mann bzw Drucker bringen soll, hab nicht soviel Erfahrung mit .NET... Wäre echt überglücklich, falls wir das ganze zum funktionieren bringen würdenSmile

Edit: Der Druckreport wird über das Report Generation Toolkit realisiert, manuelles aufrufen der Druck-Funktion ist daher nicht möglichSad

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.09.2011, 14:20
Beitrag #6

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Druckeroptionen setzen
Lösung über .Net scheint nicht möglich, da der Report selbst mit ActiveX zu funktionieren scheint...

Jedoch ist es Möglich über die Registry die Druckereinstellungen zu ändern DanceDanceDance
Der anzupassende Key ist: HKEY_CURRENT_USER\Printers\Connections\*Druckername*\DevMode

Nun habe ich das Problem, dass ich die Datenstruktur nur für C habe und daher nicht genau weiss wie ich das ganze auswerten muss:-S

Mein benötigter Wert besitzt den Offset von 98 (dmDuplex), möchte jedoch gleich ein VI für die ganzen Einstellungen machen damit sich nach mir keiner mehr damit abmühen mussBig Grin

Hier die Definition von Microsoft aus:

typedef struct _devicemode {
TCHAR dmDeviceName[CCHDEVICENAME];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DWORD dmFields;
union {
struct {
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
short dmScale;
short dmCopies;
short dmDefaultSource;
short dmPrintQuality;
};
struct {
POINTL dmPosition;
DWORD dmDisplayOrientation;
DWORD dmDisplayFixedOutput;
};
};
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
TCHAR dmFormName[CCHFORMNAME];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
union {
DWORD dmDisplayFlags;
DWORD dmNup;
};
DWORD dmDisplayFrequency;
#if (WINVER >= 0x0400)
DWORD dmICMMethod;
DWORD dmICMIntent;
DWORD dmMediaType;
DWORD dmDitherType;
DWORD dmReserved1;
DWORD dmReserved2;
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
DWORD dmPanningWidth;
DWORD dmPanningHeight;
#endif
#endif
} DEVMODE, *PDEVMODE, *LPDEVMODE;


Mir geht es vorallem darum die Offsets zu bestimmen, dazu fehlt mir jedoch die Ahnung wieviel Platz die ganzen structs einnehmen, die Datentypen sind mir grösstenteils (bis auf TChar und Pointl) bekannt...
Hoffe jemand kann mir weiterhelfen.

Vielen dank schon mal im vorraus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.09.2011, 14:25
Beitrag #7

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Druckeroptionen setzen

Akzeptierte Lösung

So hab mich mal durch das binäre File gekämpftBox

Hier meine Lösung, falls ihr Duplex-Optionen für einen Netzwerkdrucker setzten wolltCool
Für einen lokalen Drucker müsste man den passenden Registry-Eintrag im VI "PrinterSettings" anpassen, der Rest sollte wie gehabt funktionieren.

Da beim VI in der Drucker-Registry rumgefingert wird distanziere ich mich von möglichen Problemen, welche beim benutzen des VIs entstehen können. Bei mir hat jedoch alles wie gewünscht funktioniertCool

LabVIEW 2009:


0.0 .zip  SetDuplexOption Folder.zip (Größe: 100,87 KB / Downloads: 409)


Viel Spass damitBig Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: