FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Impresora
Primeramente, mi problema es que quiero cambiar el tamaño del papel de la impresora.
Hace tiempo que plantee este problema en otro hilo, y ahora después de seguir investigando encontré este link, directo del soporte técnico de Microsoft http://support.microsoft.com/default...0285#appliesto Aqui explican cómo usando la API es posible cambiar las propiedades de la impresión, pero... lo estuve trasladando a Pascal y tengo un problema: Código:
var hPrinter: THandle; dwNeeded: Dword; pi2: ^PRINTER_INFO_2; pDevMode: ^DevMode; pd: PRINTER_DEFAULTS; begin hprinter := 0; dwNeeded := 0; pdevmode := nil; ZeroMemory( @pd, Sizeof(pd) ); pd.DesiredAccess := PRINTER_ACCESS_ADMINISTER; if OpenPrinter(PAnsiChar(Printer.Printers[Printer.PrinterIndex]), hPrinter, @pd ) then begin SetLastError(0); GetPrinter(hPrinter, 2, nil, 0, @dwNeeded ); pi2 := Pointer( GlobalAlloc( GPTR, dwNeeded ) ); if not( GetPrinter(hPrinter, 2, pi2, dwNeeded, @dwNeeded) ) then begin ShowMessage( IntToStr(GetLastError) ); Exit; end; if pi2.pDevMode <> nil then begin pi2.pSecurityDescriptor := nil; pi2.pDevMode.dmFields := DM_PAPERLENGTH and DM_PAPERWIDTH and DM_PAPERSIZE; pi2.pDevMode.dmPaperLength := 1000; pi2.pDevMode.dmPaperWidth := 2160; pi2.pDevMode.dmPaperSize := DMPAPER_User; end; end; end; PD: Nótese que según el soporte técnico de Microsoft, este código sirve para XP y NT, yo estoy usando XP Professional
__________________
“Daría todo lo que sé por la mitad de lo que ignoro” |
|
|
|