No logro encontrar handle a SysListView32 de taskmanager

Iniciado por x64core, 9 Julio 2011, 02:52 AM

0 Miembros y 3 Visitantes están viendo este tema.

x64core

Cita de: Hasseds en  9 Julio 2011, 06:01 AM
Estoy chequeando que el Tab Control es 1 (procesos)

el de Aplicaciones por ejemplo sería  0 (cero)
If SendMessage(HwTab, &H1300 + 11, 0, 0) = 0 Then



Private Const TCM_FIRST = &H1300 
Private Const TCM_GETCURSEL = (TCM_FIRST + 11)




gracias  ;D yo lo unico que no entendi muy bien fue la ultima parte:

HwTab = FindWindowEx(HwndTask, 0, "SysTabControl32", vbNullString)
   
   If SendMessage(HwTab, &H1300 + 11, 0, 0) = 1 Then
     HwLv = FindWindowEx(HwndTask, 0, "#32770", vbNullString)
     HwLv = FindWindowEx(HwLv, 0, "SyslistView32", vbNullString)
   End If


todo lo anterior y todas las demas funciones las entendi bien solo esta parte porq yo utilizaba esto:

     HwLv = FindWindowEx(HwndTask, 0, "#32770", vbNullString)
     HwLv = FindWindowEx(HwLv, 0, "SyslistView32", vbNullString)


por eso no entiendo bien que hace esto:


HwTab = FindWindowEx(HwndTask, 0, "SysTabControl32", vbNullString)
   
If SendMessage(HwTab, &H1300 + 11, 0, 0) = 1 Then


Hasseds

#11
Cita de: Raul100 en  9 Julio 2011, 06:17 AM

por eso no entiendo bien que hace esto:


HwTab = FindWindowEx(HwndTask, 0, "SysTabControl32", vbNullString)
 
If SendMessage(HwTab, &H1300 + 11, 0, 0) = 1 Then






Cita de: Hasseds en  9 Julio 2011, 06:01 AM
Estoy chequeando que el Tab Control es 1 (procesos)

el de Aplicaciones por ejemplo sería  0 (cero)
If SendMessage(HwTab, &H1300 + 11, 0, 0) = 0 Then



Private Const TCM_FIRST = &H1300  
Private Const TCM_GETCURSEL = (TCM_FIRST + 11)



' Este es el Hwnd del TabControl (Pestañas de Aplicaciones, Procesos, rendimiento, Funciuones de Red, Usuarios)
HwTab = FindWindowEx(HwTask, 0, "SysTabControl32", vbNullString)


Y aquí chequeas que la Pestaña activa del TabControl sea igual a uno (la de procesos, que es la que contiene el SyslistView32 que te interesa,)
If SendMessage(HwTab, &H1300 + 11, 0, 0) = 1 Then


http://msdn.microsoft.com/en-us/library/bb760583(v=vs.85).aspx




Aclaracion: seria mas facil usar FindWindow en lugar de la Function HwndTask
Código (vb) [Seleccionar]

  Dim HwTask As Long
  Dim HwChild As Long
  Dim HwTab As Long
  Dim HwLv As Long
 
  HwTask = FindWindow("#32770", vbNullString) ' FindWindow en lugar de la Function HwndTask

 
  If HwTask <> 0 Then
    HwTab = FindWindowEx(HwTask, 0, "SysTabControl32", vbNullString)
    If SendMessage(HwTab, &H1300 + 11, 0, 0) = 1 Then
      HwChild = FindWindowEx(HwTask, 0, "#32770", vbNullString)
      HwLv = FindWindowEx(HwChild, 0, "SyslistView32", vbNullString)
    End If
  End If


Pero como hay mas ventanas en el sistema con la misma Disposición, (Por ejemplo Propiededes de Pantalla en XP), esto podría prestarse a errores y darte una mala información. Por eso en este caso es preferible usar la la Function HwndTask.

http://foro.elhacker.net/programacion_visual_basic/no_logro_encontrar_handle_a_syslistview32_de_taskmanager-t332950.0.html;msg1636759#msg1636759










Sergio Desanti

Hasseds

#12
Edito: olvidé unos parentesis en el codigo original

http://foro.elhacker.net/programacion_visual_basic/no_logro_encontrar_handle_a_syslistview32_de_taskmanager-t332950.0.html;msg1636759#msg1636759




Private Function IsWinBorder(ByVal hwnd As Long) As Boolean
   If (GetWindowLong(hwnd, &HFFF0) And &H800000) = &H800000 Then IsWinBorder = True
End Function



Sergio Desanti

x64core

sale tio  gracias tu codigo me a ayudado bastante ;D