Ola.
Eu tenho esse código abaixo que pausa impressoes, porem é em vbs, gostaria de fazer o mesmo em java, só que até agora nao consegui, se puderem me ajudar.
Desde já Obrigado.
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\” & strComputer & “\root\cimv2”)
Set colPrintJobs = objWMIService.ExecQuery _
(“Select * from Win32_PrintJob”)
For Each objPrintJob in colPrintJobs
objPrintJob.Pause
Next
Acho melhor deixar como está - usar uma biblioteca (Jacob) para fazer isso que está em VBScript é bem chato e pode congelar seu programa às vezes, já que usa código nativo.
mas se eu deixar desta forma terei que executar este arquivo sempre que chegar uma impressao no spool, isso nao pode trazer algum bug do tipo o usuario enviar a impressao e ela passa rapido pelo spool a ponto dele nao conseguir executar este arquivo e pausar a impressao?
Não entendi bulhufas. O que você está querendo fazer, bloquear o spooler? Não bastaria, nesse caso, parar o próprio serviço de impressão?
eu quero pausar todas as impressoes que chegar no spooler ai ira invocar uma janela para autenticaçao de usuario, se ele estiver correto ira continuar a impressao senao ira cancelar.
Ainda acho esquisito esse requisito.
Você não quer deixar o tiozinho da padaria que tem acesso ao seu sistema como “guest” imprimir um “bloquinho” de 1200 páginas na sua impressora, é isso?
Que tal você verificar como é que se desabilita o acesso de determinados usuários à impressora?
Acho que isso pode ser feito.
Esse tipo de solução que você quer fazer não vai funcionar direito.
Você não poderia simplesmente desabilitar a função de impressão de acordo com o perfil do usuário logado?
Assim ele nem tentaria imprimir.
O que normalmente se faz é o seguinte:
A impressora está compartilhada em um determinado servidor Windows.
Nesse servidor Windows, você clica com o botão direito na impressora compartilhada, e seleciona uma aba que tem o nome de “Segurança” ou “Security”.
Aí você configura que usuários (ou grupos de usuários) estão autorizados a usar a tal impressora.
O que não se pode fazer é esse tipo de solução que você quer fazer porque, como você mesmo descobriu, ele é muito fácil de burlar (muitas vezes não dá tempo de você conseguir pausar o trabalho de impressão - o tiozinho da padaria mandou imprimir 1500 folhas em branco, que é um job de 10 kbytes, e já era. )
Vou tentar explicar melhor…
Eu utilizo um linux como gerenciador de impressao, todas as impressoes da rede passa pelo cups e ele gerencia, verifica o usuario que enviou a impressao e quantidade de paginas. Porém algumas maquinas sao utilizadas por varias pessoas no mesmo usuario do windows, entao utilizando esta janela de autenticaçao eu consigo identificar estes usuarios. Porem eu tenho que pausar a impressao para que o usuario digite ‘usuario e a senha’ para gerenciar as impressoes. E o meu problema esta em pausar e despausar estas impressoes.
Como eu preciso fazer a autenticaçao na hora da impressao a opçao Segurança do windows nao ira me ajudar.
complicado, acho que nem o nosso amigo top hacker entanglement sabe responder :(.
sem olhar o ambiente fica difícil(ao menos pra mim, um mero Ninja)
Eu apenas gostaria de pausar a impressao utilizando java, sabe quando a impressao chega no spool e vc clica com o botao direito encima dela e em pausar. É isso o que eu quero fazer em java.
Pode chamar esse VBS a partir de seu programa Java. Mas isso, como você deve ter percebido, não é completamente suficiente para pausar completamente a impressão, porque o job pode ser processado mais rapidamente que o seu programa (quer seja escrito em VBS, quer seja usando Java + Jacob).