Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - seba123neo

#2591
Hola, aunque no lo crean a mi me ha pasado tambien , una vez de un dia al otro, sin aviso de nada, abri el visual basic y me salto el instalador de visual basic .NET  :xD...algo totalmente inexplicable...al final era un valor en el registor de windows que hacia saltar el instalador...y tambien tuve problemas con el crystal reports que saltaba el instalador al inciar visual basic, algun conflicto debe haber, se modifican los valores del registro anda a saber...

saludos.
#2592
Hola, aca te paso un codigo que me parecio bueno para lo que queres, despues modificalo vos para lo que realmente necesitas, lo que hace es listarte las todas las ventanas..con su HWND, nombre de clase y caption de la ventana...y al hacer click accedes tambien a las Ventanas Hijas...necesitas 2 listview , 1 check, y un boton...ponelos asi nomas con las propiedades por defecto y despues pega este codigo...el checkbox sirve para elegir si queres listar todas las ventanas del sistema o solo las que tienen caption...

En un Modulo:

Código (vb) [Seleccionar]
Option Explicit

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Any) As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare Function EnumChildWindows Lib "user32" (ByVal hwndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Any) As Long

Public Const WM_GETTEXT = &HD
Public Const WM_GETTEXTLENGTH = &HE
Public Const EM_GETPASSWORDCHAR = &HD2

Public VCount As Integer, ICount As Integer

Public Function WndEnumProc(ByVal hwnd As Long, ByVal lParam As ListView) As Long
    Dim WText As String * 512
    Dim bRet As Long, WLen As Long
    Dim WClass As String * 50
       
    WLen = GetWindowTextLength(hwnd)
    bRet = GetWindowText(hwnd, WText, WLen + 1)
    GetClassName hwnd, WClass, 50

    With Form1
        If (.Check1.Value = vbUnchecked) Then
            Insertar hwnd, lParam, WText, WClass
        ElseIf (.Check1.Value = vbChecked And WLen <> 0) Then
            Insertar hwnd, lParam, WText, WClass
        End If
    End With
   
    WndEnumProc = 1
End Function

Private Sub Insertar(iHwnd As Long, lParam As ListView, iText As String, iClass As String)
    lParam.ListItems.Add.Text = Str(iHwnd)
    lParam.ListItems.Item(VCount).SubItems(1) = iClass
    lParam.ListItems.Item(VCount).SubItems(2) = iText
    VCount = VCount + 1
End Sub

Public Function WndEnumChildProc(ByVal hwnd As Long, ByVal lParam As ListView) As Long
    Dim bRet As Long
    Dim myStr As String * 50
    bRet = GetClassName(hwnd, myStr, 50)
    With lParam.ListItems
        .Add.Text = Str(hwnd)
        .Item(ICount).SubItems(1) = myStr
        .Item(ICount).SubItems(2) = GetText(hwnd)
        If SendMessage(hwnd, EM_GETPASSWORDCHAR, 0, 0) = 0 Then
            .Item(ICount).SubItems(3) = "NO"
        Else
            .Item(ICount).SubItems(3) = "SI"
            .Item(ICount).ForeColor = vbRed
            .Item(ICount).Bold = True
            .Item(ICount).ListSubItems.Item(1).ForeColor = vbRed
            .Item(ICount).ListSubItems.Item(1).Bold = True
            .Item(ICount).ListSubItems.Item(2).ForeColor = vbRed
            .Item(ICount).ListSubItems.Item(2).Bold = True
            .Item(ICount).ListSubItems.Item(3).ForeColor = vbRed
            .Item(ICount).ListSubItems.Item(3).Bold = True
        End If
    End With
    ICount = ICount + 1
    WndEnumChildProc = 1
End Function

Function GetText(iHwnd As Long) As String
    Dim Textlen As Long
    Dim Text As String
    Textlen = SendMessage(iHwnd, WM_GETTEXTLENGTH, 0, 0)
    If Textlen = 0 Then
        GetText = "No se encontro Texto..."
        Exit Function
    End If
    Textlen = Textlen + 1
    Text = Space(Textlen)
    Textlen = SendMessage(iHwnd, WM_GETTEXT, Textlen, ByVal Text)
    GetText = Left(Text, Textlen)
End Function


En el Formulario:

Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Load()
    Command1.Caption = "Listar Ventanas"
    Check1.Caption = "Solo Ventanas con Caption"
    Call ConfiguraListview
End Sub

Private Sub ConfiguraListview()
    ListView1.View = lvwReport
    ListView1.FullRowSelect = True
    ListView2.FullRowSelect = True
    With ListView1.ColumnHeaders
        .Add , , "HWND", 1000
        .Add , , "Nombre de Clase", 1500
        .Add , , "Caption Ventana", 3000
    End With
    VCount = 1
    ListView2.View = lvwReport
    With ListView2.ColumnHeaders
        .Add , , "HWND", 1000
        .Add , , "Nombre de Clase", 1500
        .Add , , "Caption Ventana", 2500
        .Add , , "Textbox de Password", 1500
    End With
    ICount = 1
End Sub

Private Sub Command1_Click()
    ListView1.ListItems.Clear
    ListView2.ListItems.Clear
    ListView1.GridLines = True
    VCount = 1
    EnumWindows AddressOf WndEnumProc, ListView1
End Sub

Private Sub Listview1_Click()
    Call ListarHijas
End Sub

Private Sub ListarHijas()
On Error Resume Next
    Dim Numero As Long
    Numero = Val(ListView1.SelectedItem)
    ListView2.ListItems.Clear
    ListView2.GridLines = True
    ICount = 1
    EnumChildWindows Numero, AddressOf WndEnumChildProc, ListView2
End Sub


saludos.
#2593
detecta cuando le da al boton cancelar y oculta el form(Hide queda en memoria) y despues con un Timer..lo ejecutas cada 2 o 3 minutos como quieras...

saludos.
#2594
Hola, una chapuza muy mala...

Código (vb) [Seleccionar]
Option Explicit

Dim vItem As Integer, i As Integer
Dim Pausa As Long

Private Sub Command1_Click()
    If List1.ListCount = 0 Then Exit Sub
    vItem = List1.ListIndex
    Timer1.Enabled = True
    Timer1.Interval = 200
End Sub

Private Sub Form_Load()
    For i = 0 To 5
        List1.AddItem "Item " & i
    Next i
End Sub

Private Sub Form_Unload(Cancel As Integer)
    End
End Sub

Private Sub Timer1_Timer()
    List1.Selected(vItem) = True
    Pausa = 0.5 + Timer
    While Pausa >= Timer
        DoEvents
    Wend
    List1.Selected(vItem) = False
End Sub


saludos.
#2595
Hola, es tan facil que ni te lo digo, mejor mira como funciona un Timer primero...

Control Timer - Temporizador

saludos.
#2596
Hola, pues si queres filtrar solo tenes que poner en la consulta SQL un Where fecha...etc...en un command se puede hacer sin problemas...ahora lo que no entiendo es eso de las 2 secciones...solo hay una sección de detalle..donde ahi van los campos...¿que otra sección usas? y ¿que error te tira..?

saludos.
#2597
Programación Visual Basic / Re: modulos
5 Marzo 2009, 01:48 AM
Hola, lee un manual basico y listo.. :¬¬
#2598
Cita de: Dessa en  4 Marzo 2009, 00:26 AM
Que le pregunte a "Zorba"  :D

jaja buenisimo...
#2599
no afecta en anda porque esa liberia es propia del framework y mientras la pc donde ejecutes el programa tenga instalada la versión del framework que necesite tu aplicación pues va a andar sin problemas...
#2600
Hola, antes tenes que añadir la referencia a la libreria de System.Management en el menu "añadir referencia"...y despues haces un Imports System.Management y ahi ya tenes para usar WMI...

saludos.