Olá pessoal, venho novamente com dúvidas em relação as API de impressão.
Peço desculpas, porque este deve ser o terceiro tópico.... todos os outros já foram respondidos e consegui executar a dúvida em questão.
Está aqui acredito ser minha última dúvida (espero)....
Pois bem. Tenho um programa, que quando executado verifica se há trabalho na fila de impressão (EnumJob) e retorna o resultado. O meu problema aqui é, descobrir que usuário é que está enviando este documento (caso a impressora esteja compartilhada!).
Tenho algumas apis que fazem isto e está funcionando..... mas antes que me xinguem... isto está com um problema... toda vez que executo (sem fechar o programa) ele vai alocando mais memória... sem fim....
Na verdade este programa é uma bomba por enquanto.... e precisaria resolver isto...
Abaixo posto o código que estou usando.... se houver uma forma de liberar a memória usando este mesmo code seria legal.... mas se tiver outro código também está valendo....
No código eu discrimino onde ele aloca a memória, mas realmente não sei o que fazer para liberar...
Desde já agradeço a paciência de vocês... espero um dia chegar a nível de poder ajudar a responder mais do que perguntar.....
Private Declare Sub CopyMem Lib "kernel32.dll" Alias "RtlMoveMemory" (pTo As Any, uFrom As Any, ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32.dll" (ByVal lpString As Long) As Long
Private Declare Function HeapAlloc Lib "kernel32.dll" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GetProcessHeap Lib "kernel32.dll" () As Long
Private Declare Function HeapFree Lib "kernel32.dll" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long
'É exatamente aqui que está o problema
'Allocate the Buffer
TempBuff = HeapAlloc(GetProcessHeap(), 0, pcbNeeded)
ret = EnumJobs(hPrinter, 0, 127, 1, TempBuff, pcbNeeded, pcbNeeded, pcReturned)
CopyMem Jobs(0), ByVal TempBuff, pcbNeeded
obs.: Só abusando, se houver uma forma de obter também o número de páginas a ser impresso, seria perfeito, mas não é a prioridade não!!!
Pergunta
Vader
Olá pessoal, venho novamente com dúvidas em relação as API de impressão.
Peço desculpas, porque este deve ser o terceiro tópico.... todos os outros já foram respondidos e consegui executar a dúvida em questão.
Está aqui acredito ser minha última dúvida (espero)....
Pois bem. Tenho um programa, que quando executado verifica se há trabalho na fila de impressão (EnumJob) e retorna o resultado. O meu problema aqui é, descobrir que usuário é que está enviando este documento (caso a impressora esteja compartilhada!).
Tenho algumas apis que fazem isto e está funcionando..... mas antes que me xinguem... isto está com um problema... toda vez que executo (sem fechar o programa) ele vai alocando mais memória... sem fim....
Na verdade este programa é uma bomba por enquanto.... e precisaria resolver isto...
Abaixo posto o código que estou usando.... se houver uma forma de liberar a memória usando este mesmo code seria legal.... mas se tiver outro código também está valendo....
No código eu discrimino onde ele aloca a memória, mas realmente não sei o que fazer para liberar...
Desde já agradeço a paciência de vocês... espero um dia chegar a nível de poder ajudar a responder mais do que perguntar.....
obs.: Só abusando, se houver uma forma de obter também o número de páginas a ser impresso, seria perfeito, mas não é a prioridade não!!!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados