tem como prever se tem impressora instalada na porta LPT1
ola galera
gostaria de uma ajuda de vocês tem como prever se tem impressora instalada na porta LPT1, por que se não tiver instalado da um erro, gostaria de prever este erro.
felipecremm@hotmail.com
Felipe
gostaria de uma ajuda de vocês tem como prever se tem impressora instalada na porta LPT1, por que se não tiver instalado da um erro, gostaria de prever este erro.
felipecremm@hotmail.com
Felipe
Fcremm
Curtidas 0
Respostas
Gem
13/10/2003
não sei se vai ajuda-lo mas entre as dicas que eu tenho
tenho essa aqui
Verificar se Impressora esta Conectada
A dica abaixo apresenta o código para implementação de uma função para verificar se a impressora esta conectada.
Para implementar esta função é necessário que o código gerado manipule algumas interrupções da Bios (Sistema Básico de Entrada e Saída) responsáveis pelo controle da porta paralela (Interrupção $17).
A interrupção $17 utiliza dois registros ah e dx, o registrador ah indica neste caso o acesso a porta paralela e o registrador dx indica qual das portas será testada, 0 para LPT1 e 1 para LPT2.
Para saber se a porta esta ligada (impressora conectada) o resultado da operação de tratamento de interrupção deve ser $80.
Código Completo:
Function OnLine(Porta:Word):Boolean;
Const
Portas :Byte = $02;
Var
Res :Byte;
Begin
{ Código em Assembler }
Asm
mov ah,Portas; {Requisita o acesso as portas}
mov dx,Porta;{Define a porta de teste}
Int $17; {Chama a interrupção de Impressora}
mov Res,ah; {Guarda em Res o resultado da operação }
end;
Result := (Res and $80) = $80; {Testa o valor de saída}
End;
tenho essa aqui
Verificar se Impressora esta Conectada
A dica abaixo apresenta o código para implementação de uma função para verificar se a impressora esta conectada.
Para implementar esta função é necessário que o código gerado manipule algumas interrupções da Bios (Sistema Básico de Entrada e Saída) responsáveis pelo controle da porta paralela (Interrupção $17).
A interrupção $17 utiliza dois registros ah e dx, o registrador ah indica neste caso o acesso a porta paralela e o registrador dx indica qual das portas será testada, 0 para LPT1 e 1 para LPT2.
Para saber se a porta esta ligada (impressora conectada) o resultado da operação de tratamento de interrupção deve ser $80.
Código Completo:
Function OnLine(Porta:Word):Boolean;
Const
Portas :Byte = $02;
Var
Res :Byte;
Begin
{ Código em Assembler }
Asm
mov ah,Portas; {Requisita o acesso as portas}
mov dx,Porta;{Define a porta de teste}
Int $17; {Chama a interrupção de Impressora}
mov Res,ah; {Guarda em Res o resultado da operação }
end;
Result := (Res and $80) = $80; {Testa o valor de saída}
End;
GOSTEI 0
Rafael Heise
13/10/2003
Caro Colega..
Se o seu problema é quanto existir ou não uma impressora, você pode usar o seguinte:
esta função retorna true se existir alguma impressora e false se não existir nenhuma.
Mas não testa se ela está funcionando ou não. Apenas testa para ver se existe alguma instalada.
Mas já dá pra fazer o teste de existência...
abraços
Se o seu problema é quanto existir ou não uma impressora, você pode usar o seguinte:
function HavePrinter: boolean; var prt: TPrinter; begin prt := TPrinter.Create; try result := prt..Printers.Count > 0; finally prt.Free; end; end;
esta função retorna true se existir alguma impressora e false se não existir nenhuma.
Mas não testa se ela está funcionando ou não. Apenas testa para ver se existe alguma instalada.
Mas já dá pra fazer o teste de existência...
abraços
GOSTEI 0