Ir para conteúdo
Fórum Script Brasil
  • 0

Obter Log de Impressões do Windows


Tankeiro

Pergunta

Olá

Gostaria de saber se é possivel obter o nome do arquivo, data e hora de um arquivo que foi impresso no Windows e registrar em um banco de dados do PHP MySQL?

Quero cadastrar automaticamente o log de impressoes feitas no Windows no banco de dados MySQL usando PHP em tempo real (Uso o Laragorn sempre ligado)

Tem como?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

acho que seria algo +- assim:
 

<?php
// Configurações
$spoolDirectory = 'C:\Windows\System32\spool\PRINTERS'; // Diretório de spool de impressão
$intervaloVerificacao = 60; // Intervalo de verificação em segundos
$databaseHost = 'localhost'; // Host do banco de dados MySQL
$databaseUsername = 'seu_usuario'; // Nome de usuário do banco de dados MySQL
$databasePassword = 'sua_senha'; // Senha do banco de dados MySQL
$databaseName = 'nome_do_banco'; // Nome do banco de dados MySQL

// Função para verificar o diretório de spool de impressão
function verificarDiretorioSpool($diretorio) {
    if (!is_dir($diretorio)) {
        echo "O diretório de spool de impressão não existe.\n";
        return;
    }
    
    $arquivos = scandir($diretorio);
    if ($arquivos === false) {
        echo "Erro ao escanear o diretório de spool de impressão.\n";
        return;
    }

    foreach ($arquivos as $arquivo) {
        if ($arquivo !== '.' && $arquivo !== '..') {
            echo "Novo arquivo de log de impressão encontrado: $arquivo\n";
            analisarArquivoLogImpressao("$diretorio/$arquivo");
        }
    }
}

// Função para analisar o arquivo de log de impressão
function analisarArquivoLogImpressao($caminhoArquivo) {
    $linhas = file($caminhoArquivo);
    if ($linhas === false) {
        echo "Erro ao ler o arquivo de log de impressão: $caminhoArquivo\n";
        return;
    }

    foreach ($linhas as $linha) {
        $informacoesImpressao = extrairInformacoesImpressao($linha);
        if ($informacoesImpressao !== false) {
            inserirRegistroBancoDados($informacoesImpressao);
        }
    }
}

// Função para extrair informações de uma linha do log de impressão
function extrairInformacoesImpressao($linha) {
    // Suponha que o formato da linha seja: "nome_arquivo, data, hora"
    $dados = explode(',', $linha);
    if (count($dados) < 3) {
        echo "Formato de linha inválido: $linha\n";
        return false;
    }

    $nomeArquivo = trim($dados[0]);
    $data = trim($dados[1]);
    $hora = trim($dados[2]);

    // Validação adicional, se necessário
    if (empty($nomeArquivo) || empty($data) || empty($hora)) {
        echo "Informações de impressão inválidas: $linha\n";
        return false;
    }

    // Retornar um array associativo com as informações
    return array(
        'nome_arquivo' => $nomeArquivo,
        'data' => $data,
        'hora' => $hora
    );
}

// Função para inserir um registro no banco de dados
function inserirRegistroBancoDados($informacoes) {
    global $databaseHost, $databaseUsername, $databasePassword, $databaseName;
    $conexao = new mysqli($databaseHost, $databaseUsername, $databasePassword, $databaseName);
    if ($conexao->connect_error) {
        echo "Erro ao conectar ao banco de dados: " . $conexao->connect_error . "\n";
        return;
    }

    $sql = "INSERT INTO registros_impressao (nome_arquivo, data, hora) VALUES (?, ?, ?)";
    $stmt = $conexao->prepare($sql);
    if (!$stmt) {
        echo "Erro ao preparar a consulta SQL: " . $conexao->error . "\n";
        $conexao->close();
        return;
    }
    
    $stmt->bind_param("sss", $informacoes['nome_arquivo'], $informacoes['data'], $informacoes['hora']);
    if (!$stmt->execute()) {
        echo "Erro ao inserir registro de impressão no banco de dados: " . $conexao->error . "\n";
    } else {
        echo "Registro de impressão inserido no banco de dados com sucesso.\n";
    }

    $stmt->close();
    $conexao->close();
}

// Loop principal
while (true) {
    verificarDiretorioSpool($spoolDirectory);
    sleep($intervaloVerificacao);
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...