Autor Tema: Saber si un control es del Tipo EDIT  (Leído 3829 veces)

0 Usuarios y 1 Visitante están viendo este tema.

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Saber si un control es del Tipo EDIT
« en: Abril 22, 2010, 01:49:18 pm »
se que leandro en su antikeylogger lo hizo pero entre tanto code no lo encuentro. Ademas si lo encuentro es posible que no lo entienda. Porfa me dan una explicada de las API que usa y como
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Saber si un control es del Tipo EDIT
« Respuesta #1 en: Abril 22, 2010, 04:57:59 pm »
no se si entendi la pregunta pero si vos queres saber si una ventana es de tipo Edit pode hacerlo con el className

Código: (vb) [Seleccionar]
Option Explicit
Private Declare Function GetClassNameA Lib "user32" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Function GetClassName(ByVal hwnd As Long) As String
    Dim sBuff As String
    sBuff = String(255, Chr$(0))
    Call GetClassNameA(hwnd, sBuff, 255)
    GetClassName = Left$(sBuff, InStr(sBuff, Chr$(0)) - 1)
End Function

Private Sub Form_Load()
    MsgBox GetClassName(Me.hwnd)
End Sub
[code]

pero bueno hay ventanas que son edit y no tiene ese classname como por ejemplo los textbox de vb, tubiera que ver si hay otra forma.

xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Re:Saber si un control es del Tipo EDIT
« Respuesta #2 en: Abril 23, 2010, 11:31:14 am »
lo que yo queria es si por ejemplo tengo un handle de una ventana y quiero saber si el elemento hijo que tiene el foco es es tipo TEXTBOX (como combobox, textbox, etc)para que yo hacerle un sendmessage de GETTEXT. creo es esto pero no estoy seguro, y si es entonces una explicada
Código: [Seleccionar]
'Funcion que devuelve el control Hijo que tiene el foco
Private Function GetFocusEx() As Long
    Dim hFore As Long, hFocus As Long
 
    'hFocus = GetFocus
   
    'If hFocus = 0 Then
        hFore = GetForegroundWindow()
        Call AttachThreadInput(GetWindowThreadProcessId(hFore, 0&), GetCurrentThreadId, True)
        hFocus = GetFocus
        Call AttachThreadInput(GetWindowThreadProcessId(hFore, 0&), GetCurrentThreadId, False)
    'End If
   
    GetFocusEx = hFocus
End Function
« última modificación: Abril 23, 2010, 02:37:19 pm por xmbeat »
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

Dessa

  • Visitante
Re:Saber si un control es del Tipo EDIT
« Respuesta #3 en: Abril 24, 2010, 05:10:11 pm »
Hola xmbeat , probá si te sirve EM_GETLIMITTEXT

Código: [Seleccionar]

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const EM_GETLIMITTEXT = &HD5

Public Function EsEdit() As Boolean
  If SendMessage(GetFocusEx, EM_GETLIMITTEXT, 0, 0) <> 0 Then EsEdit = True
End Function



xmbeat

  • Kilobyte
  • **
  • Mensajes: 84
  • Reputación: +3/-1
  • la vida no tiene sentido sin Dios
    • Ver Perfil
Re:Saber si un control es del Tipo EDIT
« Respuesta #4 en: Abril 26, 2010, 11:14:41 am »
lo del sendmessage no hay problema. lo que quiero es si el control que tiene el foco es del tipo textbox o combobox
asi le hizo leandro con el antikeylogger el cual el tecladito se mostraba solo cuando el foco lo tenia este tipo de controles 
« última modificación: Abril 26, 2010, 01:24:29 pm por xmbeat »
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Saber si un control es del Tipo EDIT
« Respuesta #5 en: Abril 26, 2010, 06:46:57 pm »
yo verificaba si era de tipo ES_PASSWORD pero tampoco es una seguridad algunas veces vi que cuando tomaba foco un toolbar aparecia la ventanita, esto seguramente porque este tendria alguna constante con los mismos valores.

Saludos.