Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-04-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 213
Poder: 19
alquimista Va por buen camino
En mi mata programas utilizo la siguiente rutina, sacada de internet y modificada algo:
POr supuesto no es perfecta pero mata los programas

Código Delphi [-]
function KillTask(ExeFileName: string): Integer;

var

  foto: Cardinal;
  datos: tagPROCESSENTRY32;
  p: array[0..512] of char;

  function QuitarSaltosLinea(Strs: String; CharReplace:String=#0):String;
       var
         Str:string;
       begin
         Str := AnsiReplaceStr(Strs, #$D, CharReplace);
         Result := AnsiReplaceStr(Str, #$A, CharReplace);
       end;

begin
  Result:=0;
  ExeFileName:=QuitarSaltosLinea(ExeFileName);
  strpcopy(p,ExeFileName);

  datos.dwSize := sizeOF(tagPROCESSENTRY32);
  foto := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  while Process32Next(foto, datos) do
  begin
      if (UpperCase(datos.szExeFile) = UpperCase(p)) then
        begin
         Result := Integer(TerminateProcess(
                          OpenProcess(
                          PROCESS_TERMINATE,
                          BOOL(1), datos.th32ProcessID), 0));
         end;
 
  end;
  CloseHandle(foto);
end;

para el WinXp o NT uses tlhelp32;

Si alguno de los programas se resiste se puede usar esto para ayudar:

Código Delphi [-]
function EnablePrivilege(PrivilegeName: PChar; Enable: Boolean): Boolean;
var
  hToken: THandle;
  Tp: TOKEN_PRIVILEGES;
  Luid: TLargeInteger;
begin
  Result:= FALSE;
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
  TOKEN_QUERY or TOKEN_READ or TOKEN_WRITE or TOKEN_ALL_ACCESS, hToken) then
      if LookupPrivilegeValue(nil,PrivilegeName,Luid) then
        begin
          Tp.PrivilegeCount:= 1;
          Tp.Privileges[0].Luid:= Luid;
            if Enable then
              Tp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED
            else
              Tp.Privileges[0].Attributes:= 0;
          Result:= AdjustTokenPrivileges(hToken,FALSE,Tp,0,nil,PDWORD(nil)^);
          CloseHandle(hToken);
        end;
end;


Código Delphi [-]
EnablePrivilege('SeDebugPrivilege', TRUE);

No se exactamente que es lo que hace pero creo que me sirvio


Ya me cuentas.
Responder Con Cita
  #2  
Antiguo 23-04-2008
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 20
vejerf Va por buen camino

Gracias por tu ayuda... pero al final no me funcionó...
Me da el mismo problema que con la función de dec... no termina de cerrarse... Aghhh es que no hay forma en esta vida de acabar de una vez por todas con el Google Earth jejeje

Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Activar una ventana al cerrar otra David OOP 3 17-09-2007 21:15:54
¿Cómo cerrar otra aplicación desde la mía? Alcolea Varios 1 22-03-2007 03:02:35
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
En mi aplicacion MDI quiero crear una ventana hija desde otra ventana hija Durbed Varios 8 05-07-2005 11:51:54
Cerrar una ventana desde otra Aura OOP 9 16-05-2005 18:20:49


La franja horaria es GMT +2. Ahora son las 19:20:09.


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