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 - LeandroA

#371
hola muy bueno, creo que se puede optimizar un poquito mas comparando el primer bits de la búsqueda con el del bucle general


Public Function FindBytes2( _
       ByRef bvSource() As Byte, _
       ByRef bvMatch() As Byte) As Long

    Dim i       As Long
    Dim j       As Long
    Dim bFlag   As Boolean
    Dim lChr As Long
    Dim LenMach As Long
   
    LenMach = UBound(bvMatch)
   
    FindBytes2 = -1
    lChr = bvMatch(0)
   
    For i = 0 To UBound(bvSource)
        If lChr = bvSource(i) Then
            If LenMach > 0 Then
                For j = 1 To LenMach
                    If i + j < UBound(bvSource) Then
                        If bvMatch(j) = bvSource(i + j) Then
                            bFlag = True
                        Else
                            bFlag = False
                            Exit For
                        End If
                    End If
                Next
               
                If bFlag Then
                    FindBytes2 = i
                    Exit For
                End If
            Else
                FindBytes2 = i
                Exit Function
            End If
        End If
    Next
End Function


Saludos, y no te olvides de seguir compartiendos tus proyectos con los de habla hispana porque yo en HH esoy muerto jejej
#372
Esta bueno, el problema que mensinas segurmante es porque no detecta los saltos de linea _ de los guion vajos. entonces remplaza la linea siguiente.

Saludos
#373
hola a como lo entiendo yo es un envento previo al form_load , y es cuando se crea la clase del form y los controles aun no existen, pero si llamas alguna propiedad se ejecuta el form_load intermedio a este


Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Initialize()
MsgBox Me.Caption
End Sub

Private Sub Form_Load()
MsgBox Now
End Sub



Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Initialize()
MsgBox "Initialize"
End Sub

Private Sub Form_Load()
MsgBox "Load"
End Sub



nose si se entendio

#374
Si casualmente esta leyendo este post (o eso intentaba jeje) y la otra ves vi tambien un post de cobein que era casualmente sobre este tema que supuestamente reducia el tamaño del ejecutable al compilar pero bueno como te comentaba no me funcionaba o o quizas estaba haciendo algo mal, pero mas que nada era curiosidad.

Saludos
#375
Cita de: Karcrack en 25 Mayo 2009, 16:09 PM
Ocupa lo mismo (practicamente)... mas que nada porque el VB deja la sección... si la eliminas pita... asi que no lo hagas.. pero para reducir el peso puedes:


  • Quitar Dependecias
  • Utilizar PCode
  • Modificar el comando que le llega al LINK.EXE agregando /ALIGN:64

Y si programas bien puedes llegar a dejar un ejecutable de VB (6.0) en unos 10kb ;D ;)

Hola Karcrack, como es ese tema yo probe un par de veces y no note ningun cambio donde es que pones  /ALIGN:64 en el cuadro que dice "Argumentos de la linea de comando" o en "Argumentos de compilacion condicional"

Saludos
#376
hola, seguramente estas usando la versión 6 de windows common controls,  cambialo por la versión 5

Microsoft Windows common controls 5

Saludos
#377
Solucionado

es con GetLastActivePopup

Saludos
#378
hola, tengo un problema con este codigo, estoy listando todas las ventanas que aparecen en la barra de Tareas, y cuando le doy clic en el list me imprime la ventana, pero el problema es con el IDE de visual basic si no esta minimizado, el problema es que la ventana se llama wndclass_desked_gsk pero la que en realidad el que tiene el ExStyle WS_EX_APPWINDOW es IDEOwner como puedo obtener la ventana wndclass_desked_gsk  a partir de IDEOwner


en un modulo
Option Explicit
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function PrintWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal hdcBlt As Long, ByVal nFlags As Long) As Long

Private Const GWL_EXSTYLE As Long = -20
Private Const WS_EX_APPWINDOW As Long = &H40000
Private Const WS_EX_WINDOWEDGE As Long = &H100&

Dim arr() As Long

Public Function fEnumWindows() As Variant
    ReDim arr(0)
    Call EnumWindows(AddressOf fEnumWindowsCallBack, GetDesktopWindow)
    fEnumWindows = arr
End Function

Private Function fEnumWindowsCallBack(ByVal hWnd As Long, ByVal lParam As Long) As Long
    If IsWindowVisible(hWnd) Then
        If IsExStyle(hWnd, WS_EX_APPWINDOW) Or GetWinClassName(hWnd) = "CabinetWClass" Then
            arr(UBound(arr)) = hWnd
            ReDim Preserve arr(UBound(arr) + 1)
        End If
    End If
fEnumWindowsCallBack = True
End Function

Public Function GetWinText(ByVal hWnd As Long)
    Dim MyStr As String
    MyStr = String(100, Chr$(0))
    GetWindowText hWnd, MyStr, 100
    GetWinText = Left$(MyStr, InStr(MyStr, Chr$(0)) - 1)
End Function

Public Function GetWinClassName(hWnd As Long) As String
    Dim lpClassName As String
    Dim Ret As Long
    lpClassName = Space(256)
    Ret = GetClassName(hWnd, lpClassName, 256)
    GetWinClassName = Left$(lpClassName, Ret)
End Function

Private Function IsExStyle(hWnd As Long, ExStyle As Long) As Boolean
    IsExStyle = (GetWindowLong(hWnd, GWL_EXSTYLE) And ExStyle) = ExStyle
End Function



en un formulario con un picture1 y un list1

Option Explicit
Dim MyArr() As Long
'wndclass_desked_gsk
'IDEOwner
Private Sub Form_Load()
    Dim i As Long
   
    MyArr = fEnumWindows
   
    For i = 0 To UBound(MyArr) - 1
        List1.AddItem GetWinText(MyArr(i))
    Next
End Sub

Private Sub List1_Click()
    Picture1.Cls
    PrintWindow MyArr(List1.ListIndex), Picture1.hDC, 0
    Me.Caption = GetWinClassName(MyArr(List1.ListIndex))
End Sub


Creo que deberia utlizar GetWindowThreadProcessId pero no encotre forma de hacerlo.

Saludos

#379
Estaba a punto de decir que no se podía y me iba a jugar la cabeza cosa que la tengo grande  :laugh:, pero probé el programa y me cerro la boca así que me quede caliente en saber como era y estuve como 2 horas buscando y sabia que venia por el lado de WM_PRINT pero este solo trabaja de forma interna así que lo que hice fue buscar el nombre del autor del programa mas WM_PRINT y TATAN!!!  ;D era una pelotudez Barbara


Option Explicit
Private Declare Function PrintWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal hdcBlt As Long, ByVal nFlags As Long) As Long
Const PW_CLIENTONLY = &H1

Private Sub Command1_Click()
PrintWindow Handle, Me.hDC, 0
End Sub


pero bueno la verdad me gusto esto se me ocurren un par de cosas para usarlo y tampoco tenia idea como era la cosa con WM_PRINT

Saludos



#380
Cita de: SONIC88 en 28 Abril 2009, 21:37 PM
Un pequeño aporte de un skin para la colección  ;), espero les guste, esta simplon pero igual no esta de más, jaja,


Buenisimo SONIC88, esta muy bueno, siempre con buenos gustos de diseño, muchas gracias por el aporte.

@el_c0c0 , si olvidate de 98, ya que hay apis en 98 que tienen muchos bugs, y seguramente algunas ni existen.

Saludos.