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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 22-12-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
¿Puedo agrega ralgo?
Siempre que hablamos de procesos, por compatibilidad con las plataformas Win9x, nos referimos a Tool Help Functions, pero si estamos en alguna plataforma NT, podríamos utilizar las funciones definidas en la unit PsAPI

Código Delphi [-]
 
{ Retorna el Handle del primer proceso de la lista coincidiente con el archivo pasado }
function GetProcessByFileName(AFileName: TFileName): DWORD;
var
  pidProcess: array [0..1023] of DWORD;
  hProcess: DWORD;
  dwCount: DWORD;
  hMod: HMODULE;
  ModuleFileName: array[0..MAX_PATH] of Char;
  i: Integer;
begin
  Result := 0;
  if EnumProcesses(@pidProcess, SizeOf(pidProcess), dwCount) then
    for i := 0 to dwCount div SizeOf(DWORD) do
    begin
      hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, pidProcess[i]);
      if (hProcess <> 0) then
        try
           EnumProcessModules(hProcess, @hMod, SizeOf(hMod), dwCount);
           GetModuleFilenameEx(hProcess, hMod, ModuleFileName, SizeOf(ModuleFileName));
           if SameFileName(ModuleFileName, AFileName) then
           begin
             Result := pidProcess[i];
             break;
           end;
        finally
          CloseHandle(hProcess);
        end;
    end;
end;

procedure KillProcess(hProcess: DWORD);
var
  hProc: DWORD;
begin
  hProc := OpenProcess(PROCESS_TERMINATE, False, hProcess);
  if hProc <> 0 then
    try
      TerminateProcess(hProc, 0);
    finally
      CloseHandle(hProc);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  hProcess: DWORD;
begin
  hProcess := GetProcessByFileName('C:\WINNT\SYSTEM32\CALC.EXE');
  if hProcess <> 0 then
    KillProcess(hProcess);
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
 


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


La franja horaria es GMT +2. Ahora son las 18:37:14.


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