Ola Andre, Adaptei p/ o que eu precisava e deu certo.
Eu não tinha pensado neste sentido de alterar a impressora padrão, imprimir e depois voltar a que estava antes. Valeu pela ajuda. --- Em delphi-br@yahoogrupos.com.br, Andre Luis Silveria <[EMAIL PROTECTED]> escreveu > > procedure FazPrnAtualVirarDefault(Impressora: Integer); > var > Res: DWORD; > Device: array[0..255] of char; > Driver: array[0..255] of char; > Port: array[0..255] of char; > WindowsStr: array[0..255] of char; > hDeviceMode: THandle; > begin > if (Impressora <= Printer.Printers.Count - 1) then > begin > // Pega dados da impressora atual > Printer.PrinterIndex := Impressora; > Printer.GetPrinter(Device, Driver, Port, hDeviceMode); > // Monta string exigida pela API do Windows > StrCat(Device, ','); > StrCat(Device, Driver); > StrCat(Device, ','); > StrCat(Device, Port); > StrPCopy(WindowsStr, 'windows'); > // Torna a impressora a atual; > WriteProfileString(WindowsStr, 'device', Device); > SendMessageTimeout(HWND_BROADCAST, WM_WININICHANGE, 0, > DWORD(@WindowsStr), > SMTO_NORMAL, 1000, Res); > end; > end; > > Pegue o Indice da impressora que o usuário selecionar e seta ela como padrão, guarde o indice da impressora padrão anterior. > > ----- Mensagem original ---- > De: monicadachary <[EMAIL PROTECTED]> > Para: delphi-br@yahoogrupos.com.br > Enviadas: Quarta-feira, 3 de Outubro de 2007 8:39:13 > Assunto: Re: RES: [delphi-br] Imprimir lista de arquivos > > > > > > > > > > > > > > Sim, eu tentei, mas o meu problema é que apareça uma caixa de > > impressão no início e que a impressora escolhida seja válida p/ todos > > os arquivos a serem impressos. > > > > Coloquei no onClick do meu botão imprimir o seguinte código de teste: > > > > if PrinterSetupDialog1 .Execute then > > begin > > ShellExecute( Handle, 'print','C:\ Teste.doc' , nil,nil,SW_HIDE) ; > > ShellExecute( Handle, 'print','C:\ Teste.pdf' , nil,nil,SW_HIDE) ; > > end; > > > > Porém, o problema é que a impressora escolhida no diálogo é ignorada. > > O ShellExecute é enviado diretamente p/ a impressora padrão da > > máquina. Como faço p/ a impressora escolhida no PrinterSetup ser > > levada em conta? > > > > --- Em [EMAIL PROTECTED] os.com.br, "Davi Eduardo Borges Wall" > > <davi.wall@ ..> escreveu > > > > > > Oi Monica > > > > > > > > > > > > Por que você não abre uma caixa de dialogo de impressao ? > > > > > > > > > > > > Em dialogs, acho que se chama TPrinterSetup > > > > > > > > > > > > []'s > > > > > > > > > > > > De: [EMAIL PROTECTED] os.com.br [mailto:delphi- > > [EMAIL PROTECTED] com.br] Em nome de monicadachary > > > Enviada em: terça-feira, 2 de outubro de 2007 17:36 > > > Para: [EMAIL PROTECTED] os.com.br > > > Assunto: [delphi-br] Imprimir lista de arquivos > > > > > > > > > > > > Olá pessoal, > > > > > > Tenho uma dúvida quanto a imprimir arquivos no Delphi. Tentei > > > pesquisar no Google e nas msgs da lista, mas não achei nada que se > > > adaptasse ao que eu preciso. > > > > > > Tenho uma aplicação na qual há uma lista de arquivos cadastrados > > pelo > > > usuário e ele tem a opção de escolher determinados arquivos p/ > > serem > > > impressos. Então eu poderia ter na listagem Arquivo1.doc e > > > Arquivo2.pdf, por exemplo. > > > > > > O que eu preciso é que quando o usuário selecione os arquivos e > > > clique no botão p/ imprimir, apareça uma caixa de diálogo de > > > impressão, na qual ele irá escolher a impressora, e que esta > > > configuração irá valer p/ todos os arquivos a serem impressos. Ou > > > seja, seleciona os arquivos, seleciona a impressora e manda todos > > p/ > > > a impressão. > > > > > > Encontrei exemplos de códigos do tipo: > > > > > > ShellExecute( Handle, 'print','C:\ Teste.doc' , nil,nil,SW_HIDE) ; > > > > > > Porém envia o arquivo p/ a impressora padrão, não abre o diálogo. E > > > também vale somente p/ um arquivo. > > > > > > Vocês teriam alguma sugestão de implementação p/ este problema? > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > <!-- > > #ygrp-mkp{ > border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;} > #ygrp-mkp hr{ > border:1px solid #d8d8d8;} > #ygrp-mkp #hd{ > color:#628c2a;font-size:85%;font-weight:bold;line- height:122%;margin:10px 0px;} > #ygrp-mkp #ads{ > margin-bottom:10px;} > #ygrp-mkp .ad{ > padding:0 0;} > #ygrp-mkp .ad a{ > color:#0000ff;text-decoration:none;} > --> > > > > <!-- > > #ygrp-sponsor #ygrp-lc{ > font-family:Arial;} > #ygrp-sponsor #ygrp-lc #hd{ > margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;} > #ygrp-sponsor #ygrp-lc .ad{ > margin-bottom:10px;padding:0 0;} > --> > > > > <!-- > > #ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;} > #ygrp-mlmsg table {font-size:inherit;font:100%;} > #ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, sans-serif;} > #ygrp-mlmsg pre, code {font:115% monospace;} > #ygrp-mlmsg * {line-height:1.22em;} > #ygrp-text{ > font-family:Georgia; > } > #ygrp-text p{ > margin:0 0 1em 0;} > #ygrp-tpmsgs{ > font-family:Arial; > clear:both;} > #ygrp-vitnav{ > padding-top:10px;font-family:Verdana;font-size:77%;margin:0;} > #ygrp-vitnav a{ > padding:0 1px;} > #ygrp-actbar{ > clear:both;margin:25px 0;white-space:nowrap;color:#666;text- align:right;} > #ygrp-actbar .left{ > float:left;white-space:nowrap;} > .bld{font-weight:bold;} > #ygrp-grft{ > font-family:Verdana;font-size:77%;padding:15px 0;} > #ygrp-ft{ > font-family:verdana;font-size:77%;border-top:1px solid #666; > padding:5px 0; > } > #ygrp-mlmsg #logo{ > padding-bottom:10px;} > > #ygrp-vital{ > background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;} > #ygrp-vital #vithd{ > font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text- transform:uppercase;} > #ygrp-vital ul{ > padding:0;margin:2px 0;} > #ygrp-vital ul li{ > list-style-type:none;clear:both;border:1px solid #e0ecee; > } > #ygrp-vital ul li .ct{ > font-weight:bold;color:#ff7900;float:right;width:2em;text- align:right;padding-right:.5em;} > #ygrp-vital ul li .cat{ > font-weight:bold;} > #ygrp-vital a{ > text-decoration:none;} > > #ygrp-vital a:hover{ > text-decoration:underline;} > > #ygrp-sponsor #hd{ > color:#999;font-size:77%;} > #ygrp-sponsor #ov{ > padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;} > #ygrp-sponsor #ov ul{ > padding:0 0 0 8px;margin:0;} > #ygrp-sponsor #ov li{ > list-style-type:square;padding:6px 0;font-size:77%;} > #ygrp-sponsor #ov li a{ > text-decoration:none;font-size:130%;} > #ygrp-sponsor #nc{ > background-color:#eee;margin-bottom:20px;padding:0 8px;} > #ygrp-sponsor .ad{ > padding:8px 0;} > #ygrp-sponsor .ad #hd1{ > font-family:Arial;font-weight:bold;color:#628c2a;font- size:100%;line-height:122%;} > #ygrp-sponsor .ad a{ > text-decoration:none;} > #ygrp-sponsor .ad a:hover{ > text-decoration:underline;} > #ygrp-sponsor .ad p{ > margin:0;} > o{font-size:0;} > .MsoNormal{ > margin:0 0 0 0;} > #ygrp-text tt{ > font-size:120%;} > blockquote{margin:0 0 0 4px;} > .replbq{margin:4;} > --> > > > > > > > > > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! > http://br.mail.yahoo.com/ > > [As partes desta mensagem que não continham texto foram removidas] >