AGAG4
06-12-2005, 17:36:33
Uso D6.
Tengo una aplicación para imprimir Facturas en una impresora matricial, tengo la siguiente función para mandar a imprimir en la impresora dependiendo del nombre de la misma:
function SpoolFile(const FileName, PrinterName: string): Integer;
var
Buffer: record
JobInfo: record // ADDJOB_INFO_1
Path: PChar;
JobID: DWORD;
end;
PathBuffer: array[0..255] of Char;
end;
SizeNeeded: DWORD;
Handle: THandle;
PrtName: string;
ok: Boolean;
begin
// Flush job to printer
PrtName := PrinterName;
if PrtName = '' then
PrtName := Printer.Printers[Printer.PrinterIndex]; // Default printer name
ok := False;
if OpenPrinter(PChar(PrtName), Handle, nil) then
if AddJob(Handle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then
if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then
if ScheduleJob(Handle, Buffer.JobInfo.JobID) then
ok := True;
if not ok then
Result := GetLastError
else
Result := 0;
end;
Tengo 6 PC's con Win98 que mandan a imprimir sin Problemas, pero al poner una PC's con WinXP se vinieron los problemas con esta función, el problema se presentan en las demás PC's que mandan a través de la RED la impresión, LOCALMENTE en WinXp no hay problema, es decir cuando la doy de alta la impresora en una PC's en RED WinXp le agrega el siguiente nombre FACTURAS en SERVIDOR con ese nombre mando como parámetro a la función y no manda nada, le mando también como \\Servidor\Facturas (file://\ServidorFacturas) y tampoco, le mando como FACTURAS y menos, por lo que ando investigando como mandar a imprimir en WinXP a través de la red.
Agradezco cualquier sugerencia.
Tengo una aplicación para imprimir Facturas en una impresora matricial, tengo la siguiente función para mandar a imprimir en la impresora dependiendo del nombre de la misma:
function SpoolFile(const FileName, PrinterName: string): Integer;
var
Buffer: record
JobInfo: record // ADDJOB_INFO_1
Path: PChar;
JobID: DWORD;
end;
PathBuffer: array[0..255] of Char;
end;
SizeNeeded: DWORD;
Handle: THandle;
PrtName: string;
ok: Boolean;
begin
// Flush job to printer
PrtName := PrinterName;
if PrtName = '' then
PrtName := Printer.Printers[Printer.PrinterIndex]; // Default printer name
ok := False;
if OpenPrinter(PChar(PrtName), Handle, nil) then
if AddJob(Handle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then
if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then
if ScheduleJob(Handle, Buffer.JobInfo.JobID) then
ok := True;
if not ok then
Result := GetLastError
else
Result := 0;
end;
Tengo 6 PC's con Win98 que mandan a imprimir sin Problemas, pero al poner una PC's con WinXP se vinieron los problemas con esta función, el problema se presentan en las demás PC's que mandan a través de la RED la impresión, LOCALMENTE en WinXp no hay problema, es decir cuando la doy de alta la impresora en una PC's en RED WinXp le agrega el siguiente nombre FACTURAS en SERVIDOR con ese nombre mando como parámetro a la función y no manda nada, le mando también como \\Servidor\Facturas (file://\ServidorFacturas) y tampoco, le mando como FACTURAS y menos, por lo que ando investigando como mandar a imprimir en WinXP a través de la red.
Agradezco cualquier sugerencia.