Club Delphi  
    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
  #1  
Antiguo 23-10-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
Exclamation SysListView32 de TaskMgr de Windows

Saludos, miren este problema, estoy tratando de eliminar uno de los Ítems del ListView que muestra los procesos en el Administrador de Tareas, no solamente eliminar sino también obtener el titulo de este, estas operaciones las realizo con las funciones para manejar el control ListView de la unit commctrl, ejemplo de ellas:

Cita:
ListView_GetItemCount
ListView_GetItem
ListView_DeleteItem
ListView_GetItemText



Bueno, lo primero que hago es obtener el Handle de este control, he tratado de hacerlo de la siguiente forma pero no funciona:

Cita:
var
LV_Handle: Cardinal;
begin
LV_Handle := FindWindow(nil, 'Administrador de tareas de Windows');
LV_Handle := FindWindowEx(LV_Handle, 0, 'SysListView32', 'Procesos');


No se por que pero no me resuelve el Handle del Listview de procesos del Administrador de tareas,

Para eso he usado la siguiente función:

Código Delphi [-]
function GetTaskMgrListViewProcess(): Cardinal;
const
  LV_ClassName = 'SysListView32';
  LV_WindowName = 'Procesos';
  TMgr_Title = 'Administrador de tareas de Windows';
var
  vTaskMgrWnd: Cardinal;

  function EnumObjectsFunc(Hwnd, lParam: LongInt): Boolean; stdcall;
  var
    wndText: array[0..100] of char;
    wndClass: array[0..100] of char;
  begin
    Result := true;
    GetWindowText(Hwnd, wndText, 100);
    GetClassName(Hwnd, wndClass, 100);
    if (wndText = LV_WindowName) and (wndClass = LV_ClassName) then
      vLVHwnd := Hwnd;
  end;

begin
  Result := 0;
  vTaskMgrWnd := FindWindow(nil, TMgr_Title);
  if vTaskMgrWnd > 0 then
    begin
      EnumChildWindows(vTaskMgrWnd, @EnumObjectsFunc, 0);
Result  :=  vLVHwnd;
    end;
end;


Con esta función si obtengo el Handle de este Listview , ahora lo que quiero es obtener el titulo/text/caption del item #1 por ejemplo, lo intento de esta forma:

Código Delphi [-]
Uses commctrl;

Var
  vLVHwnd: Cardinal;


procedure TForm1.Button1Click(Sender: TObject);
var
  LV_Handle: Cardinal;
  ItemText: array[0..100] of Char;
begin
  LV_Handle := GetTaskMgrListViewProcess();
  ListView_GetItemText(LV_Handle, 1, 1, ItemText, 100);

end;


Y ocurre un error en el Administrador de tareas, se cierra y al final no obtengo el titulo de item #1,

¿alguien me puede ayudar con este problema?, ¿Cómo obtengo el texto de un item cualquiera de este Listview?


Muchas gracias de antemano
Saludos cordiales,

aeff

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Microsoft autoriza a los fabricantes a instalar Windows XP en vez de Windows Vista Ñuño Martínez Noticias 4 26-09-2007 06:11:19
Windows Vista: el nuevo Windows ME Casimiro Notevi Noticias 14 21-06-2007 10:39:57
Windows cede ante Google y modificará Windows Vista Bicho Noticias 5 20-06-2007 23:31:04
Compartir recursos entre Windows Nt Server y Windows 98 fer21unmsm Windows 1 18-07-2006 22:05:44
Problemas con Windows XP y Windows 98 Aprendiendo Varios 1 20-05-2005 17:28:29


La franja horaria es GMT +2. Ahora son las 21:38:08.


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