elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 74
91  Programación / Programación Visual Basic / Re: Obtener puntero de funcion dentro de un form o class. en: 8 Mayo 2011, 09:30 am
Hola BlackZeroX si funciona quizas lo probaste con un STATIC y no recibe el WM_MouseMove proba con BUTTON

Class1
Código:
Option Explicit
Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProcA Lib "user32" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_WNDPROC As Long = -4
Private Const WM_DESTROY As Long = &H2
 
Private PrevWndProc As Long
Private bvASM(40) As Byte

Private Declare Function DestroyWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Const WS_VISIBLE As Long = &H10000000
Private mWnd As Long

Public Function WindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    WindowProc = CallWindowProcA(PrevWndProc, hwnd, Msg, wParam, lParam)
 
    If Msg = WM_DESTROY Then
        Call StopSubclassing(hwnd)
    End If
   
    Debug.Print Msg, wParam, lParam
End Function
 
Private Sub SetSubclassing(Obj As Object, hwnd As Long)
    Dim WindowProcAddress As Long
    Dim pObj As Long
    Dim pVar As Long
 
    Dim i As Long
 
    For i = 0 To 40
        bvASM(i) = Choose(i + 1, &H55, &H8B, &HEC, &H83, &HC4, &HFC, &H8D, &H45, &HFC, &H50, &HFF, &H75, &H14, _
                                 &HFF, &H75, &H10, &HFF, &H75, &HC, &HFF, &H75, &H8, &H68, &H0, &H0, &H0, &H0, _
                                 &HB8, &H0, &H0, &H0, &H0, &HFF, &HD0, &H8B, &H45, &HFC, &HC9, &HC2, &H10, &H0)
    Next i
 
    pObj = ObjPtr(Obj)
 
    Call CopyMemory(pVar, ByVal pObj, 4)
    Call CopyMemory(WindowProcAddress, ByVal (pVar + 28), 4)
 
    Call LongToByte(pObj, bvASM, 23)
    Call LongToByte(WindowProcAddress, bvASM, 28)
 
    PrevWndProc = SetWindowLongA(hwnd, GWL_WNDPROC, VarPtr(bvASM(0)))
End Sub
 
Private Sub StopSubclassing(hwnd)
    Call SetWindowLongA(hwnd, GWL_WNDPROC, PrevWndProc)
End Sub
 
Private Sub LongToByte(ByVal lLong As Long, ByRef bReturn() As Byte, Optional i As Integer = 0)
    bReturn(i) = lLong And &HFF
    bReturn(i + 1) = (lLong And 65280) / &H100
    bReturn(i + 2) = (lLong And &HFF0000) / &H10000
    bReturn(i + 3) = ((lLong And &HFF000000) \ &H1000000) And &HFF
End Sub

Private Sub Class_Initialize()
    mWnd = CreateWindowEx(0&, "Button", "Hola Mundo", WS_VISIBLE, 0&, 0&, 300, 300, 0&, 0&, App.hInstance, ByVal 0&)
    If mWnd <> 0 Then Call SetSubclassing(Me, mWnd)
End Sub

Private Sub Class_Terminate()
    If mWnd <> 0 Then
        Call StopSubclassing(mWnd)
        DestroyWindow mWnd
    End If
End Sub

Saludos.
92  Programación / Programación Visual Basic / Re: Obtener puntero de funcion dentro de un form o class. en: 7 Mayo 2011, 12:02 pm
Simplemente asombroso la verdad acostumbrado a utilizar la clase de Paul Caton  que son muchisimas lineas, con esto esta barbaro.

para informacion a todos, si quieren utilizarlo desde un modulo clase cambiar este valor en esta linea
Código:
Call CopyMemory(WindowProcAddress, ByVal (pVar + 1784), 4)
para un modulo clase cambiar 1784 por 28
y para un User Control  por 1956

Seguramente me surjan algunas dudas mas adelante sobre como implementar un subclass y un Api Timer en un mismo modulo o bien dos Sub para distintos hilos.
si tenes idea postealo para agendarlo.

Saludos.
93  Programación / Programación Visual Basic / Re: Obtener puntero de funcion dentro de un form o class. en: 5 Mayo 2011, 19:27 pm
muy bueno F3B14N, veo que eliminaste VirtualAlloc y VirtualFree con lo que se termino el problema que mencionaba anteriormente al parecer todo funciona de lujo  :), además se simplifico mucho mas.

Gracias por compartirlo.

PD: fijate quizas te guste mas para crear el ASM(), creo que asi lo hacia Cobein.

Código:
        Dim sCode As String

   
        sCode = "90FF05000000006A0054FF742418FF742418FF742418FF7424186800000000B800000000FFD0FF0D00000000A10000000085C075" & _
                "0458C21000A10000000085C0740458C2100058595858585868008000006A00680000000051B800000000FFE00000000000000000"
               
        For i = 0 To Len(sCode) - 1 Step 2
            bvASM(i / 2) = CByte("&h" & Mid$(sCode, i + 1, 2))
        Next
Saludos.
94  Programación / Programación Visual Basic / Re: Obtener puntero de funcion dentro de un form o class. en: 4 Mayo 2011, 04:50 am
@BlackZerox: Quitale el punto al final

creo que lo mejor que veas estos links
http://www.activevb.de/tutorials/tut_subclass_asm/tut_subclass_asm.html

y descargate este .zip que esta muy bueno.

http://www.activevb.de/rubriken/klassen/windows/csubclasser/subclasser.zip

pd: yo estoy utilzando estas clases y uc pero me me suelen crashear cuando llama a VirtualFree, creo que esto ocurre cuando llega un msg a WindowProc  y llame a VirtualFree, no quiero dar un ejemplo exacto para no irme por las ramas pero si alguien le encuentra una solución o quiere que entre en detalles que chifle.

Saluods.

95  Programación / Programación Visual Basic / Re: Scroll Control o Contenedor en: 2 Mayo 2011, 02:51 am
hola la verdad skinear el scroll es un verdadero dolor de cabeza, lo mejor es empezar desde 0 creando un usercontrol de un scroll diseñado a gusto y luego recrear todo el control, a la larga es mas facil.

Saludos.
96  Programación / Programación Visual Basic / Re: [VB6][SNIPPET] mAPIPatchByID - Carga APIs dinamicamente (Late binding) en: 25 Abril 2011, 02:09 am
Hola, me da error 53 no se ha encontrado el archivo nadaesloqueparece, estoy en windows 7 32 bits
el id seria el ordinal del MessageBoxA ? , no testie si es el 2 quizas ese sea el problema.

Saludos.
97  Programación / Programación Visual Basic / Re: Proyecto Facebook Spam, 10% en: 16 Abril 2011, 00:07 am
Hola aun no entiendo mucho el proposito o bien como funciona, vos recolectas datos de personas para luego enviarle algun tipo de spam o lo que fuere, bien con que cuenta le envias ese spam, ¿se puede enviar un mensage a alguien que no tenes como contacto sin algun tipo de capcha?

en respuesta al proyecto mio aun funciona bien. :rolleyes:

Saludos.
98  Programación / Programación Visual Basic / Re: Problema al poner controles dentro de un ListView. en: 13 Abril 2011, 03:53 am
Hola no te combiene superponer el control sobre el listview, lo mejor es si dibujar el boton de Drop cuando el item tiene el foco ya que el control combo box casi seguro tiene otro tamaño que el item del listview y este no es ajustable, entonces cuando haces click dibjuas el Drop con el api DrawEdge  o con DrawThemeBackground (si es que queres utilizas los Temas de windows) entonces si haces clik o doble clik llevas un combobox Visible=false justo sobre el RECT del item y desplegas la lista utilizando SendMessage

no se si me entendes pero la idea es utilizar solo un combobox y dibujar los dropbutons

Saludos.
99  Programación / Programación Visual Basic / Re: Ayuda Con Archivos .BMD (Usados en Mu Online) en: 5 Abril 2011, 09:50 am
Hola mira no se si es el mimsmo .BMD que el Mu leelo bien y analizalo estan todas las extructuras

http://www.amnoid.de/gc/bmd.txt

Mucha suerte  :xD
100  Programación / Programación Visual Basic / Re: [RETO] GetMaskColor en: 26 Marzo 2011, 00:19 am
Aca esta mi función

Código
  1. Option Explicit
  2. Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal Y As Long) As Long
  3.  
  4. Private Type BuferColor
  5.    Color As Long
  6.    Count As Long
  7. End Type
  8.  
  9. Private Sub Form_Load()
  10.    Picture1.AutoRedraw = True
  11.    Me.BackColor = GetMaskColor(Picture1)
  12. End Sub
  13.  
  14. Private Function GetMaskColor(oPic As PictureBox) As Long
  15.    Dim i As Long, j As Long, x As Long
  16.    Dim lWidth As Long, lHeight As Long
  17.    Dim NumIcon As Long
  18.    Dim aColors() As Long
  19.    Dim BC() As BuferColor
  20.    Dim bFind As Boolean
  21.    Dim lMax As Long, ArrSize As Long
  22.  
  23.    lWidth = (oPic.ScaleWidth \ oPic.ScaleHeight)
  24.    If lWidth = 0 Then lWidth = 1
  25.    lWidth = oPic.ScaleWidth \ lWidth
  26.    lHeight = oPic.ScaleHeight
  27.  
  28.    NumIcon = oPic.ScaleWidth \ lWidth
  29.  
  30.    ArrSize = (NumIcon * 4) - 1
  31.  
  32.    ReDim aColors(ArrSize)
  33.  
  34.  
  35.    For i = 0 To NumIcon - 1
  36.        aColors(j) = GetPixel(oPic.hdc, x, 0)
  37.        aColors(j + 1) = GetPixel(oPic.hdc, x + lWidth - 1, 0)
  38.        aColors(j + 2) = GetPixel(oPic.hdc, x, lHeight - 1)
  39.        aColors(j + 3) = GetPixel(oPic.hdc, x + lWidth - 1, lHeight - 1)
  40.        j = j + 4
  41.        x = x + lWidth
  42.    Next
  43.  
  44.    ReDim BC(ArrSize)
  45.    x = 0
  46.  
  47.    For i = 0 To ArrSize
  48.       bFind = False
  49.       For j = 0 To x
  50.            If BC(j).Color = aColors(i) Then
  51.                BC(j).Count = BC(j).Count + 1
  52.                bFind = True
  53.                Exit For
  54.            End If
  55.       Next
  56.       If Not bFind Then BC(x).Color = aColors(i): x = x + 1
  57.    Next
  58.  
  59.    For i = 0 To x - 1
  60.        If BC(i).Count > lMax Then
  61.            lMax = BC(i).Count
  62.            GetMaskColor = BC(i).Color
  63.        End If
  64.    Next
  65.  
  66. End Function
  67.  

Seba la idea es obtener un color final, puede que alla un empate en la cantidad de colores  pero almenos es una aproximación

Saludos.
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 74
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines