Impedir execução de qualquer programa

Delphi

11/09/2005

Pessoal, como faço para monitorar a abertura de programas pelo Delphi, usando o nome das janelas? Por exemplo, quero desenvolver um soft que fique executando em segundo plano, que bloqueie a abertura do MSN, do Media Player e do Winamp, e também a abertura de determinados sites, como sites pornôs e de bate-papo. Obrigado


Bruno Gomes

Bruno Gomes

Curtidas 0

Melhor post

Lucaniasalvatore

Lucaniasalvatore

11/09/2005

Boa noite, Bruno.

O projeto que ganhou o topuploader de agosto é o que vc tá procurando,veja:
[url]https://www.devmedia.com.br/visualizacomponente.aspx?comp=239&site=3[/url]

Boa programação,

Lucania Salvatore


GOSTEI 1

Mais Respostas

Bruno Gomes

Bruno Gomes

11/09/2005

Olá, Lucania. Agradeço a sua ajuda, mas o projeto que você citou não é necessariamente o que estou precisando. O projeto bloqueia o executável se ele estiver em determinado diretório. Se o usuário instalar o programa em outro diretório conseguirá executar o programa. E ele também não bloqueia certas páginas da internet.

Preciso de um código ou componente que bloqueie a execução de programa pelo nome de sua janela (form) e que também bloqueie determinadas páginas da web.

Obrigado


GOSTEI 0
Xanatos

Xanatos

11/09/2005

Bom brunorgomes, atraves do WMI vc pode saber o momento em que um programa é criado e saber o nome do exe... ´calc.exe, winword.exe´ e assim vc poderia criar uma lista de executaveis proibidos ... como ´cartao.exe,msnmsg.exe´, e etc... e no caso do iexplore.exe vc poderia criar uma rotina para acessar o nome dos links e finalizar eles atraves do wmi tb...


GOSTEI 0
Bruno Gomes

Bruno Gomes

11/09/2005

bom, pessoal, é exatamente isso que eu preciso fazer, mas só quero saber como eu faria isso. Eu tenho a rotina que captura o nome das janelas, mas eu quero saber como faço para monitorar a abertura de programas, para saber o momento de ler o nome das janelas.

Em relação à internet, qual a rotina para capturar o link visitado? É disso que estou precisando...

Obrigado


GOSTEI 0
Xanatos

Xanatos

11/09/2005

Bom..eu tb to tentando fazer um programa assim, eu fiz o seguinte:

1 - Aplicativo Servidor

1 - Cliente que me fornece inf de consumo(mem usada, nro de processos, programas instalados, etc...)
1 - Cliente só para me mandar os processos que sao executados (o teu caso)

----------

Ai no meu servidor eu tenho um BD e nele uma tabela de Processos Proibidos e qdo o Cliente executa um arquivo Ex: calc.exe ele manda para o servidor e o servidor decide o que fazer ... podendo avisar o cliente q nao pode ou simplesmente finalizar ...

Atraves do WMI vc tem o handle do processo ...e atraves dele vc le o nome da janela...qto aos links ainda nao mechi com isso mas vou ver se descubro como!!!!


GOSTEI 0
Lucaniasalvatore

Lucaniasalvatore

11/09/2005

Boa tarde, Bruno.

Achei um programa pronto, na medida da sua necessidade. Vc cadastra os programas que deseja bloquear a execução. Ele fica residente (na bandeja). Feito em Delphi 6.


[b:9d491a5029]Program Killer 3.0.1[/b:9d491a5029]
[url]http://sourceforge.net/projects/progkill/[/url]

É open-source.

Boa programação,

Lucania Salvatore


GOSTEI 0
Bruno Gomes

Bruno Gomes

11/09/2005

Pessoal, agradeço bastante a ajuda. Meu problema está 50¬ resolvido. Agora só preciso de uma rotina para bloquear determinados site da internet, como sites pornôs e de bate-papo.

Mais um vez, muito obrigado!


GOSTEI 0
Michael

Michael

11/09/2005

Olá colega!

A solução para seu problema se chama [b:97c121aeed]API Hooking[/b:97c121aeed]. Com esta técnica, basta vc ´hookar´ as API´s do Windows [b:97c121aeed]CreateProcessA/W[/b:97c121aeed] e vc conseguirá saber qdo qualquer processo for executado na sua máquina, de qualquer lugar e por quem quer que seja. Vc pode então determinar o q fazer: exibir uma mensagem ao usuário, pedir uma senha para a autorizar a execução, etc.

Da mesma forma para verificar quais sites da Web o usuário está acessando. Não me lembro a API de cabeça para isso, mas ela existe.

Para usar esta técnica, a primeira coisa é obter uma biblioteca de API Hooking. Aqui vc encontra uma, free para uso não comercial, feito pelo meu amigo [b:97c121aeed]Nildo[/b:97c121aeed]: www.projetobms.net .

Escrevi um artigo sobre o tema para a revista ClubeDelphi, que deve sair na edição de novembro.

[]´s


GOSTEI 0
Xanatos

Xanatos

11/09/2005

Testei e funcionou aqui...

uses
  ddeman;


procedure GetCurrentURL(out URL, Title: string);
var
   DDEClient : TDDEClientConv;
   p, q: PChar;
   i: Integer;
begin
   DDEClient := TDDEClientConv.Create(nil);
   try
     with DDEClient do if SetLink(´IExplore´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscape´, ´WWW_GetWindowInfo´) or
       SetLink(´Mosaic´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscp6´, ´WWW_GetWindowInfo´) or
       SetLink(´Mozilla´, ´WWW_GetWindowInfo´) or
       SetLink(´Firefox´, ´WWW_GetWindowInfo´) then
       p := RequestData(´0xFFFFFFFF´)
     else raise Exception.Create(´Could not establish browser DDE link´);
     if Assigned(p) then try
       q := p;
       Assert(q^ = ´"´);
       SetLength(URL, StrLen(q));
       Inc(q);
       i := 0;
       while q^ <> ´"´ do begin
         if (q^ = ´\´) and (q[1] = ´"´) then Inc(q);
         Inc(i);
         URL[i] := q^;
         Inc(q);
       end;
       SetLength(URL, i);
       SetLength(Title, StrLen(q));
       i := 0;
       Inc(q, 3);
       while q^ <> ´"´ do begin
         if (q^ = ´\´) and (q[1] = ´"´) then Inc(q);
         Inc(i);
         Title[i] := q^;
         Inc(q);
       end;
       SetLength(Title, i);
     finally
       StrDispose(p);
     end else raise Exception.Create(´Could not fetch browser data´);
   finally
     DDEClient.Free;
   end;
end;



GOSTEI 0
POSTAR