Drucker dauerhaft wählen
-
- Beiträge: 12
- Registriert: 09.01.2010 12:05
- Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit) - Wohnort: Cuxhaven
Drucker dauerhaft wählen
Ich schreibe gerade mein erstes Prog in PB.
Die Drucker wahl über PrintRequester() ist mir bekannt.
Ich möchte aber im SETUP den Drucker nur einmal auswählen, so das bei einem erneuten Prg-Start die Druckerauswahl nicht wieder getroffen werden muß.
Der gewählte Drucker ist natürlich nicht der Standard Drucker.
Bisher ist für mich keine Lösung in Sicht.
Ein kleiner Tip wäre klasse.
Danke.
Die Drucker wahl über PrintRequester() ist mir bekannt.
Ich möchte aber im SETUP den Drucker nur einmal auswählen, so das bei einem erneuten Prg-Start die Druckerauswahl nicht wieder getroffen werden muß.
Der gewählte Drucker ist natürlich nicht der Standard Drucker.
Bisher ist für mich keine Lösung in Sicht.
Ein kleiner Tip wäre klasse.
Danke.
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
XP SP3
INTEL CORE QUAD
2 GB
Re: Drucker dauerhaft wählen
Eine "Config" datei anlegen und dort den Wert des Druckers reinschreiben, beim neustart dann einfach diesen Wert wieder auslesen.
Hilfe dazu File Lib bzw Preference Lib
Hilfe dazu File Lib bzw Preference Lib
-
- Beiträge: 12
- Registriert: 09.01.2010 12:05
- Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit) - Wohnort: Cuxhaven
Re: Drucker dauerhaft wählen
UPPS !
Die Antwort war wirklich ultra schnell. Danke.
Abspeichern und wieder laden, klar so hab ich mir das vorgestellt.....
aber welche Parameter sind das, PrintRequester() = "X" ?
So einfach ist es dann wohl doch nicht.
Sorry wenn die Frage zu simpel ist.
Die Antwort war wirklich ultra schnell. Danke.
Abspeichern und wieder laden, klar so hab ich mir das vorgestellt.....
aber welche Parameter sind das, PrintRequester() = "X" ?
So einfach ist es dann wohl doch nicht.
Sorry wenn die Frage zu simpel ist.
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
XP SP3
INTEL CORE QUAD
2 GB
Re: Drucker dauerhaft wählen
Grad falschrum

Code: Alles auswählen
X = PrintRequester()
-
- Beiträge: 12
- Registriert: 09.01.2010 12:05
- Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit) - Wohnort: Cuxhaven
Re: Drucker dauerhaft wählen
Da habe ich mich unklar ausgedrückt.
Wie ich den PrintRequester() Wert bekomme und speichere ist klar,
aber wie geht der umgekehrte Weg.
Gespeicherte Daten laden ist kein Problem, aber den PrintRequester() wieder auf z.B. 1 zu setzen.
Wie ich den PrintRequester() Wert bekomme und speichere ist klar,
aber wie geht der umgekehrte Weg.
Gespeicherte Daten laden ist kein Problem, aber den PrintRequester() wieder auf z.B. 1 zu setzen.
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
XP SP3
INTEL CORE QUAD
2 GB
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Drucker dauerhaft wählen
den "Requester" setzt du ja nicht auf irgendeinen wert, sondern du checkst VOR dem Aufruf, ob der Wert geändert werden soll.
also mal PseudoCode:
den Printrequester kenn ich selber nicht...
Schau dir doch mal den selbstgestrickten von hjbremer an: http://www.purebasic.fr/german/viewtopi ... =8&t=21597
also mal PseudoCode:
Code: Alles auswählen
If HoleNeueWerte = #True
Werte = DingensRequester()
Else
Werte = DateiAuslesen()
EndIf
Schau dir doch mal den selbstgestrickten von hjbremer an: http://www.purebasic.fr/german/viewtopi ... =8&t=21597
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 12
- Registriert: 09.01.2010 12:05
- Computerausstattung: WIN 10
PureBasic 7.52 für Windows (x64 64-bit) - Wohnort: Cuxhaven
Re: Drucker dauerhaft wählen
Was ich möchte ist:
1. Bei der Installation des Prg im Setup einen Drucker auswählen, über PrintRequester().
2. Das Ergebnis speichern.
a= PrintRequester() -> speichern
3. Der Rechner wird neu gestartet, Prog wird aufgerufen, holt den gespeicherten Wert "a"
4. Übergibt den Wert, damit ist wieder der gleiche Drucker im Gebrauch.
5. Überprüfung ob a=PrintRequester() zum gleichen Ergebnis führt.
nein, PrintRequester() aufrufen
ja, alles ist gut, weiter im Prg
Punkt 4 ist mein Problem.
Der Drucker ist nicht und darf nicht der Standard Drucker sein, somit müßte ich bei jedem Prg start PrintRequester() ausführen. Das möchte ich vermeiden. Deshalb speichern -> einlesen und Wert übergeben.
Übergeben, aber wie ?
Da stehe ich und komm nicht weiter.
1. Bei der Installation des Prg im Setup einen Drucker auswählen, über PrintRequester().
2. Das Ergebnis speichern.
a= PrintRequester() -> speichern
3. Der Rechner wird neu gestartet, Prog wird aufgerufen, holt den gespeicherten Wert "a"
4. Übergibt den Wert, damit ist wieder der gleiche Drucker im Gebrauch.
5. Überprüfung ob a=PrintRequester() zum gleichen Ergebnis führt.
nein, PrintRequester() aufrufen
ja, alles ist gut, weiter im Prg
Punkt 4 ist mein Problem.
Der Drucker ist nicht und darf nicht der Standard Drucker sein, somit müßte ich bei jedem Prg start PrintRequester() ausführen. Das möchte ich vermeiden. Deshalb speichern -> einlesen und Wert übergeben.
Übergeben, aber wie ?
Da stehe ich und komm nicht weiter.
PureBasic 4.4
XP SP3
INTEL CORE QUAD
2 GB
XP SP3
INTEL CORE QUAD
2 GB
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Drucker dauerhaft wählen
Mit PureBasic kann man nur auf den DefaultPrinter drucken oder man ruft den PrintRequester auf.
Andere Möglichkeiten gibts es nativ nicht, macht also keinen Sinn das Ergebnis von PrintRequester
zu speichern, da man es nicht wiederverwenden kann.
Mit etwas API kommste doch noch ans Ziel, siehe hierzu ins CodeArchiv (http://www.purearea.net)
nach Printer_List.pb. Mit diesem Code kannste den DefaultPrinter setzen, also sicherst du den
Orginal-Default-Printer und setzt deinen Drucker als Default und machst das nach dem Drucken
rückgängig. Da nicht immer alle Drucker verfügbar sind sollte man sowas mit bedacht machen!
Als Einsteiger sollteste also erstmal die Finger von lassen und den PrinterRequester nutzen!
Gruß
Thomas
Andere Möglichkeiten gibts es nativ nicht, macht also keinen Sinn das Ergebnis von PrintRequester
zu speichern, da man es nicht wiederverwenden kann.
Mit etwas API kommste doch noch ans Ziel, siehe hierzu ins CodeArchiv (http://www.purearea.net)
nach Printer_List.pb. Mit diesem Code kannste den DefaultPrinter setzen, also sicherst du den
Orginal-Default-Printer und setzt deinen Drucker als Default und machst das nach dem Drucken
rückgängig. Da nicht immer alle Drucker verfügbar sind sollte man sowas mit bedacht machen!
Als Einsteiger sollteste also erstmal die Finger von lassen und den PrinterRequester nutzen!
Gruß
Thomas
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Drucker dauerhaft wählen
Ja es gibt keinen Befehl SetPrinter mit dem du die Einstellungen wieder herholen kannst, es geht also nicht.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Drucker dauerhaft wählen
Hier die Lösung:
(nicht unter Win9x anwendbar!)
Gruß
Thomas
(nicht unter Win9x anwendbar!)
Code: Alles auswählen
EnableExplicit
Prototype.s GetDefaultPrinter(Printer.s, *buffer)
Prototype.i SetDefaultPrinter(Printer.p-unicode)
Procedure.s GetDefaultPrinter()
Protected DLL.i = OpenLibrary(#PB_Any, "winspool.drv")
Protected _GetDefaultPrinter.GetDefaultPrinter
Protected Size.i, Result.s
If DLL
CompilerIf #PB_Compiler_Unicode
_GetDefaultPrinter = GetFunction(DLL, "GetDefaultPrinterW")
CompilerElse
_GetDefaultPrinter = GetFunction(DLL, "GetDefaultPrinterA")
CompilerEndIf
If _GetDefaultPrinter
_GetDefaultPrinter(#NUL$, @Size)
If Size
Result = Space(Size)
_GetDefaultPrinter(Result, @Size)
EndIf
EndIf
CloseLibrary(DLL)
EndIf
ProcedureReturn Result
EndProcedure
Procedure.i SetDefaultPrinter(Printer.s)
Protected DLL.i = OpenLibrary(#PB_Any, "winspool.drv")
Protected _SetDefaultPrinter.Setdefaultprinter
Protected Result.i
If DLL
_SetDefaultPrinter = GetFunction(DLL, "SetDefaultPrinterW")
If _SetDefaultPrinter
Result = _SetDefaultPrinter(Printer)
EndIf
CloseLibrary(DLL)
EndIf
ProcedureReturn Result
EndProcedure
; erst den DefaultPrinter zwischenspeichern
Define.s DefaultPrinter = Getdefaultprinter()
; jetzt Deinen Drucker setzen (in diesem Beispiel den PDF-Drucker von Adobe)
If SetDefaultPrinter("Adobe PDF")
; hier drucken
; DefaultPrinter()
; StartPrinting(JobName$)
; ....
; StopPrinting()
; Drucker zurücksetzen
SetDefaultPrinter(DefaultPrinter)
EndIf
Thomas