Ir ao conteúdo
  • Cadastre-se

Ajuda em C


1234

Posts recomendados

Bom dia galera do forum...

estava precisando saber como se faz um programa para monitorar outro, por exemplo eu tenho uma aplicação que precisa rodar 24h por dia so que ela esta com erro e desliga sozinha e preciso que este programa ative novamente esta aplicação.....

obs: Se alguem tiver esse programa feito ou o fonte dele em outra linguagem já ajudaria muito.....

Muito obrigado a todos....

Link para o comentário
Compartilhar em outros sites

/*
============================================================================
verifProcess.exe:
Verifica se um processo está sendo executado, e caso não esteja o mesmo será executado
Sintaxe:
        "A sintaxe e:
        verifProcess <NOME_DO_PROCESSO> <PATH_DO_PROCESSO>
        Exemplo: verifProcess notepad.exe c:\\windows\\notepad.exe
===========================================================================
Desenvolvido por: Rafael Bronzeri
E-mail: [email][email protected][/email]
Data: 29/06/2006
---------------------------------------------------------
Deverá ser incluído no projeto o arquivo Psapi.Lib
verifProcess.cpp:
---------------------------------------------------------

*/
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include "psapi.h"

void VerificaProcesso( DWORD processID, char NomeProcesso[])
{
    char NomeDoProcesso[MAX_PATH] = TEXT("<desconhecido>");

    //Pega Handle do Processo

    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
                                   PROCESS_VM_READ,
                                   FALSE, processID );

    // Pega nome do processo

    if (NULL != hProcess )
    {
        HMODULE hMod;
        DWORD cbNeeded;

        if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
             &cbNeeded) )
        {
            GetModuleBaseName( hProcess, hMod, NomeDoProcesso,
                               sizeof(NomeDoProcesso)/sizeof(TCHAR) );
        }
    }

    //Mostra nome do processo
    //printf( TEXT("%s  (PID: %u)\n"), NomeDoProcesso, processID );

    strcpy(NomeProcesso,NomeDoProcesso);

    CloseHandle( hProcess );

    return;
}

void main(int argc, char* argv[])
{
    DWORD Processos[1024], cbNeeded, cProcessos;
    unsigned int i;
    char Nome_Processo[MAX_PATH];
    STARTUPINFO suInfo;
    PROCESS_INFORMATION procInfo;

    ZeroMemory( &suInfo, sizeof(suInfo));
    suInfo.cb = sizeof(suInfo);
    ZeroMemory( &procInfo, sizeof(procInfo));

    if (argc <= 1) {
        printf("A sintaxe e:\n\n");
        printf("verifprocess <NOME_DO_PROCESSO> <PATH_DO_PROCESSO>\n\n");
        printf("Exemplo: \nverifprocess notepad.exe c:\\windows\\notepad.exe\n\n");
        return;
    }

    //Enumera Processos
    if ( !EnumProcesses( Processos, sizeof(Processos), &cbNeeded ) )
        return;

    //Calcula quantos pid são retornados

    cProcessos = cbNeeded / sizeof(DWORD);

    // Faz um loop procurando se o processo alvo está sendo executado
    for ( i = 0; i < cProcessos; i++ ){
        VerificaProcesso(Processos[i],Nome_Processo);
        if (!stricmp(Nome_Processo,    argv[1])){
            printf("Processo %s esta sendo executado!\n",argv[1]);
            break;
        }
        else if (i == (cProcessos-1)){
            printf("Processo %s não esta sendo executado!\n",argv[1]);
            printf("Iniciando Processo ...\n",argv[1]);
            //Inicia processo
            if (CreateProcess(NULL, argv[2], NULL, NULL, FALSE, 0, NULL, NULL, &suInfo, &procInfo)){
                printf("Processo %s iniciado com sucesso!\n",argv[1]);    
            }

        }
    }
    return;
}

Qualquer dúvida, entre em contato ...

Um abraço...

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!