tamanho do papel na impressora remota

13/04/2007

1

Bom dia,

Estou com o seguinte problema em relacao ao tamanho do papel. Na impressora local consigo alterar o tamanho do papel, mas quando a impressora esta em outro pc nao consigo abrir a impressora e setar o tamanho do papel. o codigo que uso esta ai abaixo. grato at+
//-----------------------> CONFIGURA A IMPRESSORA <-----------------------// Tamanho do papel [0]-Default, [1]-Letter, [5]-Legal, [8]-A3, [9]-A4, [11]-A5, [256]-Custom (personalizado)
void CFGPRN(int PG_MODELO, int PG_TAMANHO, int PG_LARGURA)
{
HANDLE printerHandle = INVALID_HANDLE_VALUE;
AnsiString printerDriver = AnsiString( ´´ );
// AnsiString printerName = ´Epson Lx-300´;
AnsiString printerName = ´´;

TPrinter *Impressoras = Printer();
printerName = Impressoras->Printers->operator [](Impressoras->PrinterIndex);

AnsiString printerPort = AnsiString( ´´ );
PRINTER_DEFAULTS printerDefaults;
ZeroMemory( ( void * ) &printerDefaults, sizeof( PRINTER_DEFAULTS ) );
printerDefaults.DesiredAccess = PRINTER_ALL_ACCESS;
PRINTER_INFO_2 *printerInfo2 = NULL;
if ( OpenPrinter( printerName.c_str( ), &printerHandle, &printerDefaults ) != 0 )
{
DWORD printerInfoSize = 0;
GetPrinter( printerHandle, 2, 0, 0, &printerInfoSize );
if ( printerInfoSize == 0 )
{ //ShowMessage( getErrorMessageWinAPI( GetLastError( ) ) );
ShowMessage( GetLastError( ) );
}
else
{
printerInfo2 = ( PRINTER_INFO_2 * ) new BYTE[ printerInfoSize ];
if ( GetPrinter( printerHandle, 2, ( BYTE * ) printerInfo2, printerInfoSize, &printerInfoSize ) != 0 )
{
printerInfo2->pDevMode->dmFields = DM_PAPERSIZE | DM_PAPERLENGTH | DM_PAPERWIDTH;
if (PG_MODELO == 256) // tamanho custom
{ printerInfo2->pDevMode->dmPaperSize = DMPAPER_USER;
printerInfo2->pDevMode->dmPaperSize = DMPAPER_10X14;
// printerInfo2->pDevMode->dmPaperLength = PG_TAMANHO;
//printerInfo2->pDevMode->dmPaperWidth = PG_LARGURA;
}
else
{ printerInfo2->pDevMode->dmPaperSize = DMPAPER_LETTER;
}
if ( SetPrinter( printerHandle, 2, ( BYTE * ) printerInfo2, 0 ) == 0 )
{ //ShowMessage( getErrorMessageWinAPI( GetLastError( ) ) );
ShowMessage( GetLastError( ) );
SendMessageTimeout( HWND_BROADCAST, WM_DEVMODECHANGE, 0, ( LPARAM ) printerName.c_str( ), SMTO_NORMAL, 5000, NULL );
}
}
delete [ ] ( BYTE * ) printerInfo2;
}
ClosePrinter( printerHandle );
}
else
{ ShowMessage( ´Não Configurou a Impressora´ );
ShowMessage( GetLastError( ) );
}

return ;
}


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira