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)