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

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 23-04-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
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
 



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 23:22:24.


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