Drucker dauerhaft wählen
- 
				Gerold61
 - 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
- 
				Gerold61
 - 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()- 
				Gerold61
 - 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
- 
				Kaeru Gaman
 - 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()
EndIfSchau 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.
- 
				Gerold61
 - 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
- 
				DarkDragon
 - 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