Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JJunior

Impressora Ativa - Só que no winXP

Recommended Posts

Caros amigos, boa tarde!Esta é a primeira visita e também a primeira vez que participo deste forum.Pois bem, para começar estou com um problema o qual não estou conseguindo resolver, que é verificar se a impressora matricial esta ativa.Em meus aplicativos eu dispunha de uma function muito utilizada por varios de nós e disponivel na net (PrinterOnLine - Verifica o Status da Impressora), visto que esta function em aplicativos se utilizando do OS "win98" roda perfeito.Só que agora alguns clientes estão atualizando o parque(hardware & software) na maioria contendo winXP, e a tal da function PrinterOnLine não funciona no XP / 2000 ...Isto é devido aos Windows que usam arquitetura NT e darão pau com esta função porque o NT não permite acesso ao Hardware indiscriminadamente.Alguém já passou por isto e consegui resolver?Quem puder ajudar agradeço imensamente.Grande abraço a todos.JJunior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ver se ela esta instalada: Try// Set printer so, for get informationJustTest := Printer.Orientation;IsPrinterSetup := true;excepton EPrinter do IsPrinterSetup := false;end;if not IsPrinterSetup thenbeginSayAboutIt;ExitProgram;End;Para ver se ela esta ativa:While not PrinterOnline() dobegin MsgBox('Verifique a Impressora!','ATENÇÃO');end; Function PrinterOnLine : Boolean;Const PrnStInt : Byte = $17; StRq : Byte = $02; PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }Var nResult : byte;Begin (* PrinterOnLine*) Asm mov ah,StRq; mov dx,PrnNum; Int $17; mov nResult,ah;end; PrinterOnLine := (nResult and $80) = $80;End;Se precisar, ainda tenho os arquivos para verificar se ela esta conectada e se ela esta OnLine

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ver se ela esta instalada: Try// Set printer so, for get informationJustTest := Printer.Orientation;IsPrinterSetup := true;excepton EPrinter do IsPrinterSetup := false;end;if not IsPrinterSetup thenbeginSayAboutIt;ExitProgram;End;Para ver se ela esta ativa:While not PrinterOnline() dobegin MsgBox('Verifique a Impressora!','ATENÇÃO');end; Function PrinterOnLine : Boolean;Const PrnStInt : Byte = $17; StRq : Byte = $02; PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }Var nResult : byte;Begin (* PrinterOnLine*) Asm mov ah,StRq; mov dx,PrnNum; Int $17; mov nResult,ah;end; PrinterOnLine := (nResult and $80) = $80;End;Se precisar, ainda tenho os arquivos para verificar se ela esta conectada e se ela esta OnLine

NaPraia, bom dia!Muito obrigado pela ajuda, mas é justamente esta function(PrinterOnLine) que eu comentei que não funciona no XP devido a seguinte linha de instrução em ASM(assembler):Int $17; {Chama a interrupção de Impressora e o WindowsXP barra esta instrução dando pau no aplicativo} Pois o XP / 2000 e etc... OS.s que utilizam a plataforma NTnão permitem que tenhamos acesso irrestrito ao hardware.Mas estou ainda tentando alguma solução. Vamos ver no que vai dar.Grande abraço.JJunior

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.