Bitte um Test: Druckfunktion

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Bitte um Test: Druckfunktion

Beitrag von Froggerprogger »

Ahoi!
Ein Kunde moniert, dass die Druckfunktion seines Programms (von mir) nicht funktioniert.
Ich würde gerne wissen, ob es an dem Programm liegt, oder an seinem Rechner (WinXP, 256MB RAM, irgendein Farblaser über USB, der Rechner ist allerdings weit weit weg...)

Könntet ihr daher vielleicht einfach mal folgendes Programm ausführen ?
Dabei vielleicht sogar mal die Druckeinstellungen auf Querformat und höhere Auflösung stellen (unter Start->Drucker->(Standarddrucker))

Oder weiß jemand, wie man zuverlässiger Drucken könnte, als die hier genutzte Weise ?

Danke!

Code: Alles auswählen

#offsetX = 0
#offsetY = 0
#percentX = 1
#percentY = #percentX

Procedure PrintScreenEx(offsetX.f, offsetY.f, widthPercent.f, heightPercent.f)
    hDcDesktop  = GetDC_(GetDesktopWindow_())
    
    w = GetSystemMetrics_(#SM_CXSCREEN)
    h = GetSystemMetrics_(#SM_CYSCREEN)
    CreateImage(0, w, h)
     
    hDC = StartDrawing(ImageOutput(0))
      BitBlt_(hDC, 0, 0, w, h, hDcDesktop, 0, 0, #SRCCOPY)
    StopDrawing()

    ReleaseDC_(GetDesktopWindow_(), hDcDesktop)

    GrabImage(0, 1, offsetX * w, offsetY * h, widthPercent * w, heightPercent * h)
    FreeImage(0)

    DefaultPrinter()

    If 1.0 * ImageWidth(1) / PrinterPageWidth() >= 1.0 * ImageHeight(1) / PrinterPageHeight()
      pw = PrinterPageWidth()
      ph = ImageHeight(1) * PrinterPageWidth() / ImageWidth(1)
    Else 
      ph = PrinterPageHeight()
      pw = ImageWidth(1) * PrinterPageHeight() / ImageHeight(1)
    EndIf
    
    If StartPrinting("Print_Screen")
      If StartDrawing(PrinterOutput())
        DrawImage(ImageID(1), (PrinterPageWidth() - pw)/2, (PrinterPageHeight() - ph)/2, pw, ph)
        StopDrawing()
      EndIf
      StopPrinting()
    EndIf
    
    
EndProcedure

PrintScreenEx(#offsetX, #offsetY, #percentX, #percentY)
!UD2
Benutzeravatar
mueckerich
Beiträge: 220
Registriert: 13.09.2004 11:33
Wohnort: Am schönsten Flecken der Erde, zwischen PC und Motorrad

Beitrag von mueckerich »

Soooo....
habe das ganze mal getestet. Auf einem Lexmark T630 Laser am lokalen Anschluss, auf einem HP Color LaserJet 5500 über Netzwerk und auch mit dem PDFCreator (http://www.pdfforge.org/products/pdfcreator/). Auf den Druckern bis A3 Format und im PDF Creator bis A0 Format. Die Ergebnisse waren durchweg in Ordnung.
Eine kleine Anmerkung: Laut USB Spezifikation darf ein Kabel nicht länger als 5 Meter sein. Es gibt aber auch Drucker (eine Bekannte hat so ein Multifunktionsteil) da steht in der Beschreibung daß das Kabel nur 3 Meter lang sein darf.

ÄÄÄh Edit:
Sorry hab die Eckdaten vergessen: WinXP Pro SP2 auf einem DELL Optiplex GX280
Zuletzt geändert von mueckerich am 16.08.2006 13:25, insgesamt 1-mal geändert.
"Wenn Sie glauben, mich verstanden zu haben, dann habe ich mich falsch ausgedrückt" ( Alan Greenspan)
Benutzeravatar
Jason
Beiträge: 123
Registriert: 06.01.2005 17:47

Re: Bitte um Test: Druckfunktion

Beitrag von Jason »

Froggerprogger hat geschrieben:Ahoi!
Ein Kunde moniert, dass die Druckfunktion seines Programms (von mir) nicht funktioniert.
Geht hoch und quer unter Win98se über USB auf Epson Stylus Photo 1270.
Der Rest ist Schweigen!
mannybass
Beiträge: 12
Registriert: 14.10.2004 10:33

Beitrag von mannybass »

Druckt wunderbar, hoch und quer.
WinXP, Fujitsu Siemens Schleppi Amilo Pro, Tally Genicom 9022 Drucker im Netzwerk.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Medion PC
Intel 3 1000
1024MB Ram
WinXP Prof SP2

Lexmark Z22 Tintendrucker. über Seriel (oder Parrallel.. ??^^)
Din a4



Druckt super!!
Benutzeravatar
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

Beitrag von ts-soft »

Mit Canon PIXXMA IP4000 unter WinXP SP2 (USB-Anschluß) keine Probleme
im Hoch- oder Querformat.
Beim Hochformat sind die Seitenränder etwas schmal.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

Kann es sein, dass er mehrere Desktops kombiniert hat und der Screen zu groß ist, um ein Bild in der Größe zu erzeugen? Mach doch mal ein paar Abfragen mit Fehlermeldung rein.

Code: Alles auswählen

    w = GetSystemMetrics_(#SM_CXSCREEN) 
    h = GetSystemMetrics_(#SM_CYSCREEN) 
    if CreateImage(0, w, h) = 0  ;kein Image
      MessageRequester("Fehler", "Drucken fehlgeschlagen 01 " + str(w) + " " + Str(h), #pb_irgendwasok)
      procedurereturn
    endif

    hDC = StartDrawing(ImageOutput(0)) 
    if hDC = 0  ;kein StartDrawing
      MessageRequester("Fehler", "Drucken fehlgeschlagen 02", #pb_irgendwasok)
    else
      BitBlt_(hDC, 0, 0, w, h, hDcDesktop, 0, 0, #SRCCOPY) 
      StopDrawing()
    endif

  u.s.w
Dann lass Dir die Fehler-Nummern sagen und Du siehst, wo's hängt.

Sven
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Hi und danke für eure Tests und Tipps!

Telefonate haben nun ergeben, dass das Programm wahrscheinlich falsch installiert wurde. Die korrekte Installation bestand darin, ein .zip-Archiv irgendwohin auf die Festplatte zu entpacken. Stattdessen befand sich 'nach Zeugenaussagen' ein komischer Wust aus Ordnern und Dateien auf dem Desktop, so dass das Hauptprogramm (Flash-exe) das Druckprogramm (im fscommand-Ordner) wahrscheinlich gar nicht finden konnte. (Zudem war der Drucker gleichzeitig über Netzwerk und USB angeschlossen)

Ich hoffe daran lags, das wird wohl heute irgendwann getestet, ansonsten werde ich wohl wirklich noch eine Version schreiben, die jeden Schritt überprüft. Da allerdings zur Laufzeit beim Endanwender keine MessageBoxen aufspringen sollen (ist ein Fullscreen-Flash-Programm für ein Event), habe ich zunächst keine Abfragen eingebaut.

Wenn es daran lag, sollte ich nächstes Mal doch das Liefern einer Installer-exe-Datei anstelle eines zip-Archivs überdenken, um solchen DAU-Fehlern vorzubeugen...
!UD2
Benutzeravatar
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

Beitrag von ts-soft »

>> um solchen DAU-Fehlern vorzubeugen...
Bild
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

Da allerdings zur Laufzeit beim Endanwender keine MessageBoxen aufspringen sollen (ist ein Fullscreen-Flash-Programm für ein Event), habe ich zunächst keine Abfragen eingebaut.
Dann wäre ein log-File noch eine Variante. Aber ob er dass dann findet... :mrgreen:

Sven :mrgreen:
Antworten