Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-12-2004
barrauda barrauda is offline
Miembro
 
Registrado: jun 2003
Ubicación: Balcarce - Buenos Aires
Posts: 42
Poder: 0
barrauda Va por buen camino
No pemitir que se ejecute una aplicación

Hola a todo el mundo, lo que quiero lograr con mi programa es no permitir que se ejecute un programa determinado como por ejemplo el Internet Explorer. Si un usuario quiere hacerle doble click al ícino del IE para ejecutarlo, que aparezca un cartel que le diga que está deshabilitado o algo por el estilo pero lo cuestión es que no lo ejecuten.
Estube buscando en los foros pero no encontré nada, si hay algo y que está con otro nombre les pido disculpas de antemano y les agradezco por su ayuda.
Responder Con Cita
  #2  
Antiguo 22-12-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Un truco sucio puede ser, renombar el ejecutable correspondiente al programa en cuestión sustituirlo por otro con el mismo nombre pero hecho por nosotros en Delphi, en este se hallaría el mensaje oportuno.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 22-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tampoco es que sea nada muy académico, pero sólo se me ocurre un proceso (app. o servicio) que cada X tiempo revise los procesos que existen ejecutandose y "mate" los que tengas marcados como no disponibles o prohibidos. Pero tampoco acabo de verlo claro...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 22-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El problema con estas opciones es que de todas las aplicaciones posibles, el IE es quiza lo más difícil pues, aun impidiendo que se abra el IE nada impide teclar una dirección en el Explorer para ver una página así que habría que bloquear tambien éste.

No estoy seguro pero me parece que hay políticas de grupo que sirven para impedir el acceso a Internet.

Habría que buscar...

// Saludo
Responder Con Cita
  #5  
Antiguo 23-12-2004
barrauda barrauda is offline
Miembro
 
Registrado: jun 2003
Ubicación: Balcarce - Buenos Aires
Posts: 42
Poder: 0
barrauda Va por buen camino
vuelvo a lo mismo

Hola, gracias por responder, se que es difícil pero lo que necesito es más o menos como hacer por código que no se abra el Internet Explorer.
__________________
David Barraud
Licenciado en Sistemas
Responder Con Cita
  #6  
Antiguo 23-12-2004
barrauda barrauda is offline
Miembro
 
Registrado: jun 2003
Ubicación: Balcarce - Buenos Aires
Posts: 42
Poder: 0
barrauda Va por buen camino
Se me acaba de ocurrir algo

Cita:
Empezado por roman
El problema con estas opciones es que de todas las aplicaciones posibles, el IE es quiza lo más difícil pues, aun impidiendo que se abra el IE nada impide teclar una dirección en el Explorer para ver una página así que habría que bloquear tambien éste.

Lo que se me acaba de ocurrir es lo siguiente: Si uno posee un proxi para conectarse a Internet, hay que habilitar en las opciones del Internet Explorer la opcion de poder conectarse a Internet por medio de un proxi (Herramientas/Opciones de Internet/Conexiones/Configuración Lan/...). En mi caso, si no le coloco el nombre del proxi y el puerto no se puede navegar por Internet. Creo que esta es la mejor solución. Ahora lo que tenemos que hacer es conseguir por medio de código como deshabilitar y habilitar el servidor proxy. Ahí es donde ustedes me pueden ayudar. Se que son unos genios porque siempre obtengo las respuestas en este foro. Muchas gracias de antemano...
Responder Con Cita
  #7  
Antiguo 23-12-2004
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
CHiCoLiTa Va por buen camino
Cita:
Empezado por roman
El problema con estas opciones es que de todas las aplicaciones posibles, el IE es quiza lo más difícil pues, aun impidiendo que se abra el IE nada impide teclar una dirección en el Explorer para ver una página así que habría que bloquear tambien éste.
Al abrirse la direccion se abre el iexplorer.exe y la opcion de buscar procesos y matarlos seguiria siendo valida
Responder Con Cita
  #8  
Antiguo 29-12-2004
barrauda barrauda is offline
Miembro
 
Registrado: jun 2003
Ubicación: Balcarce - Buenos Aires
Posts: 42
Poder: 0
barrauda Va por buen camino
Ya conseguí solucionar mi problema

Hola a todos, lo que pude hacer para que no funcione el Internet Explorer diría que no es muy profesional pero funciona.
Lo que yo deseaba era que no se ejecute directamente el Internet Explorer pero en vista de que no me pudieron ayudar a solucionar se me ocurrió que si deshabilitaba el Proxy no se podría navegar. pude hacerlo y acá les paso el código por las dudas que alguien necesite algo por el estilo

colocar en el USES la palabra Registry


Código:
procedure Tform1.DeshabilitaProxy(bandera: Boolean);
  var
    reg: TRegistry;
  begin
    reg := TRegistry.Create;     //crea el registro
    reg.RootKey := HKEY_CURRENT_USER;    //nos situa en esta clave
    reg.OpenKey('Software', True);
    reg.OpenKey('Microsoft', True);
    reg.OpenKey('Windows', True);
    reg.OpenKey('CurrentVersion', True);
    reg.OpenKey('Internet Settings', True);
    if bandera = True then
    begin
                reg.WriteString('ProxyServer', 'proxi:1');  //Cambia el nombre del proxy
        end
        else if bandera = False then
        begin
                reg.WriteString('ProxyServer', 'nombredelproxy:número');  //habilita Proxy
        end;
    reg.CloseKey;      //cierra el registro
  end;
Luego llamanos al procedimiento desde un botón por ejemplo y le ponemos el valos true o False de acuerdo a lo que queremos hacer:

DeshabilitarProxy(true); //deshabilitamos el proxy del navegador.
DeshabilitarProxy(false); //volvemos a colocar el proxy al navegador.

Aclaración: esto les va a servir si se conectan a Internet por medio de un proxy, a mi me funcionó pero puede ser que haya casos donde no funcione.
Responder Con Cita
  #9  
Antiguo 30-12-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

Apoyo la idea de una suerte de "guardian" de apps., puesto que te permite no sólo bloquear al IE sino a las apps. que vos definas. En Internet hay un par de ejemplos en Delphi para ver los procesos activos de Window$, matarlos, etc. Sería cuestión de adaptarlos un poco a tus necesidades.

Eso es todo.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #10  
Antiguo 31-12-2004
Aztaroth Aztaroth is offline
Miembro
 
Registrado: dic 2003
Ubicación: Matamoros
Posts: 52
Poder: 21
Aztaroth Va por buen camino
No permitir ejecutar aplicaciones

Yo utilizo este codigo y me ha servido al 100%

me pongo un TTimer con el tiempo a 1 o 3 segundos dependiendo cada cuanto tiempo quieres checar,

Código Delphi [-]
procedure TForm1.DestruyeVentana(clase, nombre: String);
var
   handle : THandle;

begin
   if( clase <> '') then
      handle := FindWindow(PChar(clase), nil)
   else
      handle := FindWindow(nil, PChar(nombre));


   if handle <> 0 then
      SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE, 0);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   DestruyeVentana('IEFRAME', ''); //Internet Explorer
   DestruyeVentana('MSBLClass', ''); 
   DestruyeVentana('WMPlayerApp', '');
   DestruyeVentana('Media Player 2', '');
   DestruyeVentana('MMFRAME_MAIN', '');
   DestruyeVentana('FreeWClass', '');
   DestruyeVentana('Minesweeper', '');
   DestruyeVentana('Solitaire', '');
   DestruyeVentana('Buscaminas', '');


end;
Responder Con Cita
  #11  
Antiguo 07-02-2005
spider_Ramon spider_Ramon is offline
Miembro
 
Registrado: feb 2005
Posts: 26
Poder: 0
spider_Ramon Va por buen camino
Re: No permitir ejecutar aplicaciones

Necesito una funcion parecida acerrar aplicaciones en la Pc Local solo que yo la necesito que funcione en la Red, cada determinado tiempo checar si la maquina puede trabajar con 'X' Programa de no ser ASI CERRARLO desde una PC GUardian.

Gracias.
Responder Con Cita
  #12  
Antiguo 18-11-2005
Mariana Mariana is offline
Miembro
 
Registrado: sep 2003
Posts: 50
Poder: 21
Mariana Va por buen camino
Nombre de las aplicaciones

hola a todos, esta aplicación me ha resultado muy util, queria preguntarles de donde salen los nombres de las aplicaciones, ya que no es el mismo nombre que el ejecutable.
Gracias
Responder Con Cita
  #13  
Antiguo 18-11-2005
Aztaroth Aztaroth is offline
Miembro
 
Registrado: dic 2003
Ubicación: Matamoros
Posts: 52
Poder: 21
Aztaroth Va por buen camino
Cerrar programas

Estas son las funciones que utilizo para obtener el nombre de las Clases y Titulos de las ventanas de todas las aplicaciones que se esten ejecutando en Windows, esta hecha en Borland C++, perdon pero es que antes programaba casi todo en C++, muy pco el delphi, pero no deberias de tener el mayor problema para transcribir al Delphi.

Te creas una nueva aplicacion en delphi, agregas 2 TMemo una que diga clases y otra que diga titulos y un boton


// Evento dle boton
void __fastcall TmainForm::btnEnumClick(TObject *Sender)
{
titulos->Items->Clear();
clases->Items->Clear();
EnumWindows((WNDENUMPROC)GetWinHandleAll, NULL);
}
//---------------------------------------------------------------------------


bool __stdcall GetWinHandleAll(HWND hWnd, long hproc)
{
mainForm->ProcessHandleInformation(hWnd);
if(hWnd != NULL) return true;
return false;
}



void __fastcall TmainForm::ProcessHandleInformation(HWND h_window)
{
char classname[80];
char windowtitle[80];
// Obtener los valores de Titulo y clase de la ventana o proceso
GetWindowText(h_window, windowtitle, 80);
GetClassName(h_window, classname, 80);

//Agregalos a los TMemos
titulos->Items->Add(windowtitle);
clases->Items->Add(classname);

}
//---------------------------------------------------------------------------


//Cuando se seleccione un item de titulos seleccione tambien el nombre de la clase para saber cual es exactamente
void __fastcall TmainForm::titulosClick(TObject *Sender)
{
clases->ItemIndex = titulos->ItemIndex;
}
//---------------------------------------------------------------------------

//Si se selecciona la clase saber el titulo de la ventana
void __fastcall TmainForm::clasesClick(TObject *Sender)
{
titulos->ItemIndex = clases->ItemIndex ;
}
//-------------------------------------------------------------------------


Hay un libro en pdf que te dice como hacerlo en delphi no recuerdo el nombre.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:15:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi