Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: xmbeat en Abril 22, 2010, 01:49:18 pm

Título: Saber si un control es del Tipo EDIT
Publicado por: xmbeat 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
Título: Re:Saber si un control es del Tipo EDIT
Publicado por: LeandroA 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.
Título: Re:Saber si un control es del Tipo EDIT
Publicado por: xmbeat 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
Título: Re:Saber si un control es del Tipo EDIT
Publicado por: Dessa 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


Título: Re:Saber si un control es del Tipo EDIT
Publicado por: xmbeat 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 
Título: Re:Saber si un control es del Tipo EDIT
Publicado por: LeandroA 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.