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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Temas
Páginas: [1] 2
1  Programación / Programación Visual Basic / [PREGUNTA] Convertir una declaracion API de C# a VB6 (problema con punteros) en: 16 Marzo 2012, 19:01 pm
Buenas, la pregunta es simple. Tengo una api declarada en C# (en una clase).. y la quiero pasar a VB6. Es stdcall por lo que probe, asi que no habria dramas.
El tema es que usa un puntero a un array de bytes, y probe de mil y 1 formas y sigue crasheando.

Código
  1.        [DllImport("TPMCtrl_WinBond.dll")]
  2.        public static extern unsafe int ReadDataFromTPM(byte* UserData);

probe con cada caso de estas declaraciones:
Código
  1. Private Declare Function ReadDataFromTPM Lib "TPMCtrl_WinBond.dll" (UserData As Any) As Long
  2. Private Declare Function ReadDataFromTPM Lib "TPMCtrl_WinBond.dll" (UserData As Byte) As Long
  3. Private Declare Function ReadDataFromTPM Lib "TPMCtrl_WinBond.dll" (ByVal UserData As Byte) As Long
  4. Private Declare Function ReadDataFromTPM Lib "TPMCtrl_WinBond.dll" (UserData As Long) As Long
  5. Private Declare Function ReadDataFromTPM Lib "TPMCtrl_WinBond.dll" (ByVal UserData As Long) As Long
  6.  
  7. Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Var() As Any) As Long
  8.  
  9. Private c_bvUserData(24)       As Byte
  10.  

con sus respectivos varptr al array de bytes (en los casos que hay ByVal). tambien probe con VarPtrArray, y lo mismo... hasta hice un odl: (obviamente era 1 solo, no todos juntos)
Código:
[entry("ReadDataFromTPM")]
long ReadDataFromTPM([in] long UserData);
long ReadDataFromTPM([in] byte *UserData);
long ReadDataFromTPM([in] byte * UserData[24]);

y sigue crasheando...

Recalco que, el error NO ES DE CONVERSION DE LLAMADAS NO VALIDO (se ve que no es cdecl).
el tamaño del array de bytes esta bien, viene de esto:
Código
  1. private byte[] m_UserData = new byte[0x18];
y originalmente se llama asi:
Código
  1.        public unsafe void GetUserData()
  2.        {
  3.            fixed (byte* numRef = this.m_UserData)
  4.            {
  5.                try
  6.                {
  7.                    ReadDataFromTPM(numRef);
  8.                }
  9.                catch
  10.                {
  11.                    throw;
  12.                }
  13.            }
  14.        }

apreciaria ayuda...
saludos

2  Programación / ASM / Consulta sobre como crear un ListView32 (solucionado) en: 15 Marzo 2010, 01:02 am
Hola que tal, bueno me decidi a meterme en el tema de ASM. Hasta el momento va todo bien, pero me surgio una duda. Quiero crear un control ListView32, lo creo, perfecto. Ahora quiero agregar una columna, para ello me estoy basando en el codigo fuente del ucListView en VB6 de Carles P.V. Bueno, el tema es que no consigo meter el item del header, o algo asi. Aca adjunto el pedazo de codigo:
Código
  1.  createlv:
  2.         invoke CreateWindowEx,0,_dlgLV,NULL,WS_CHILD + WS_TABSTOP + LVS_REPORT + WS_VISIBLE,5,5,240,155,[dlghwnd],0,[wc.hInstance],NULL
  3.        mov    [dlglvhwnd],eax
  4.        invoke ShowWindow,eax,SW_SHOW
  5.        invoke  SetWindowLong,[dlglvhwnd], GWL_WNDPROC, WindowProc2                
  6.  
  7.        ; poner el lv en modo list
  8.        invoke GetWindowLong,[dlglvhwnd],GWL_STYLE
  9.        mov    [tmp], eax
  10.        mov    [tmp], tmp+LVS_LIST-LVS_ICON-LVS_SMALLICON-LVS_REPORT
  11.        invoke SetWindowLong,[dlglvhwnd],GWL_STYLE,[tmp]
  12.  
  13.        ; agregar columna
  14.        invoke lstrlen,_cap1           ; len del caption
  15.        mov    [hdi.cchTextMax], eax   ; len
  16.        mov    [hdi.pszText], _cap1    ; caption
  17.        mov    [hdi.cxy], 100          ; width
  18.        mov    [hdi.fmt], HDF_STRING+HDF_CENTER ; formato
  19.        mov    [hdi.mask], HDI_TEXT+HDI_WIDTH+HDI_FORMAT  ; mask
  20.  
  21.        invoke SendMessage,[dlglvhwnd],LVM_INSERTCOLUMN,0,[lvc] ;
  22.        invoke SendMessage,[dlglvhwnd],4127,0,0                 ; buscar header dentro del lview
  23.        mov    [dlglvheader], eax                               ; guardo resultado
  24.        invoke SendMessage,eax,HDM_SETITEM,0,[hdi]              ; seteo el item en el header
y tengo declarado asi:
Código
  1.  _dlgLV TCHAR 'SysListView32',0
  2.  _cap1 TCHAR 'LV32',0
  3.  
  4.  dlglvheader dd ?
  5.  dlglvhwnd dd ?
  6.  
  7.  tmp dd ?
  8.  
  9.  lvc LV_COLUMN
  10.  hdi HD_ITEM
estoy usando FASM. wc.hInstance viene de WNDCLASSEX que uso para crear la ventana. WndProc2 es un procedimiento que llama al DefProcWnd. Ah y probe con y sin [] en hdi y lvc.

PD: si quito la parte de 'cambiar el estilo' se ve el recuadro blanco del LV. Pero, con el codigo ese, queda del color de fondo de la ventana.

alguna sugerencia?

desde ya muchas gracias  ::)
3  Programación / Programación Visual Basic / [mod] Modificacion completa al VBAccelerator MDI Tabs! en: 15 Febrero 2010, 21:01 pm
      Hacia mucho que no posteaba por aca, asi que .. lo ultimo que hice: MDI TABS mod

      Tiene unas cuantas modificaciones con respecto al original:
    • Libre de referencias al SSUBTMR6.dll
    • Ningun modulo o clase adicional
    • Imagenes de las pestañas y botones pintadas por UxTheme
      • Se mantienen las originales (OwnerThemed_XXXXX) por si el sistema no esta usando ningun theme
    • Iconos sobre las pestañas
    • WM_MOUSEWHEEL (no anda del todo bien) para scrollear las pestañas
    • Click con el boton del medio del mouse para cerrar una pestaña
    • Imagenes HOVER sobre pestañas y botones
    • Deteccion del cambio del caption de MDI Child
    • Drag & Drop funcional
    • Le removi el AlignBottom ya que el UxTheme no admite usar pestañas al revez
    En fin, tenes que probarla para ver como funca. Ya se que algunas cosas andan medias chulengas, es por eso que cualquier fix vendria de pelos.

    Bajala de ACA

    PD: Yo le envie un mail al autor de esta clase preguntandole si podia postearla; ya que no hubo respuesta la subo igual. El autor es Steve McMahon.[/list][/list]
    4  Programación / Programación Visual Basic / DesktopRun [src] en: 31 Julio 2009, 03:20 am
    Si bien la idea es simple, costo trabajo hacerlo  ;D
    Basado en la clase cDesktop (ShellProt) de Cobein

    PRUEBENLO COMPILADO, no del ide!

    Lo que hace esto es lo siguiente: Comprueba que un mutex no exista. Si no existe, lo crea y se ejecuta a si mismo (pero en otro escritorio, uno virtual). Entonces si el mutex existe, significa que esta corriendo en el escritorio virtual. Si estas en el escritorio virtual, comprobar que otro mutex no exista. Si no existe, llama a un sub (MainVirtual) donde corre todo el programa en si. Si el mutex existe, significa que ya se esta ejecutando una instancia, y sobre el escritorio virtual.

    linken: bajalo

    PD: no pongo screenshots dado que no serian para nada informativas.

    Edit:
    PD2: una cosa a tener en cuenta, si el programa (ejecutado en el desktop virtual) crashea, no pasa nada. el escritorio vuelve al original ya que es otro exe el que esta esperando que se cierre el .exe en el desktop virtual.

    saludos!
    5  Programación / Programación Visual Basic / problema al pasar una struct de C++ en: 31 Marzo 2009, 00:34 am
    Estoy haciendo un plugin para winamp... tengo el SDK (que en realidad no es muy explicativo, pero sirve)
    En fin, es una DLL no ActiveX, hasta ahi todo en orden.
    Para que el Winamp la tome como General Purpose Plugin, el nombre tiene que empezar con gen_xxxxxxx.dll y exportar "winampGetGeneralPurposePlugin".
    Hasta aca sigue todo en orden, exporta eso y todo bien.
    Referiendonos a esa funcion, debe devolver un puntero hacia una estructura que luego el Winamp recorre para obtener las direcciones de las 3 funciones principales: init, config y quit.
    La estructura en C++ es asi:
    Código
    1. typedef struct {
    2. int version;
    3. char *description;
    4. int (*init)();        //me imagino que es un puntero a la funcion INIT
    5. void (*config)(); //lo mismo, pero para config
    6. void (*quit)();    //y para quit lo mismo
    7. HWND hwndParent;
    8. HINSTANCE hDllInstance;
    9. } winampGeneralPurposePlugin;

    y yo de alguna manera la traduci a VB6:
    Código
    1. Public Type winampGeneralPurposePlugin
    2.    version As Long
    3.    descrpition As Long 'probe con String, pero igual explota
    4.    init As Long
    5.    config As Long
    6.    quit As Long
    7.    hwndParent As Long
    8.    hDllInstance As Long
    9. End Type
    (si es muy estupido, todo long)

    Volviendo al tema, el Winamp llama a la direccion que le paso yo en Init, pero si esa funcion devuelve 0 (como deberia segun el SDK y otros plugins) el Winamp explota. Si devuelvo otro numero, tipo 1 o -1, el Winamp se encarga de descargar la DLL...

    Ademas, description si le paso strptr() hace lo mismo.. nose donde puede estar el problema..

    Por si preguntan, carga la dll, llama a las funciones y esta todo debugueado por eso les puedo asegurar que hasta que no retorna nada Init, funciona.


    saludos
    6  Programación / Programación Visual Basic / problema UDP y COD4 en: 15 Marzo 2009, 21:33 pm
    bueno, estoy haciendo un tipo de consola remota, ya se como es el protocolo y todo eso... el tema es que se maneja via UDP.
    a todo esto, hago un simple proyecto con cSockMaster:
    Código
    1.    objSocket.RemoteHost = objSocket.LocalIP
    2.    objSocket.RemotePort = 28960
    3.    objSocket.Connect
    4.  

    probe con todo, desde poner mi ip local, hasta el nombre dentro del dominio, y no detona ningun evento!
    ni error, ni connect, ni close, NADA!

    desde otro programa (consola remota del call of duty) funciona espectacular! es mas desde el wireshark se ve como el otro programa se conecta y dialoga con el server, y el mio no, ni genera un error de que no encuentra el host, nada!

    PD: tambien probe con Winsock, y lo mismo

    en fin, por ahi podian saber q era...

    saludos
    7  Programación / Programación Visual Basic / convertir proyecto activex de C++ a vb en: 1 Marzo 2009, 22:04 pm
    hola
    bueno mira, es facil. estamos con xkiz intentando usar esta libreria
    http://www.codeproject.com/KB/shell/shellextguide7.aspx

    bueno en fin, el C++ pudimos hacer q agregue los menues q nosotros queremos, ahora si agregamos mas de 2 se borra el sub menu nuevo y algunas cosas mas..

    en fin para no meterse en el tema del C++, pense en hacerlo en VB.
    si se fijan, eso usa 2 interfaces: IContextMenu y IShellExtInit...

    en vb yo las copie con clases y luego en otra clase las implemento a ambas.

    despues, hago OutputDebugString para ver que pasa.

    en ningun momento aparece algo en el debug view sobre mi dll

    PD: tambien registro la dll como context menu handler, igual que la de C++, nomas que a mano.

    alguien sabe que carajo pasa?

    saludos
    8  Programación / Programación Visual Basic / problema con My VbQL! en: 20 Febrero 2009, 03:13 am
    Hola, estoy intentando de usar esta libreria: My VbQL

    hasta el momento uso ADODB para esto como objeto, eso funciona bien, pero queria usar este proyecto..

    en fin, hice un mini ejemplo, para conectar, y me devuelve 1 al conectar (MY_CONN_CLOSED = 1).

    que puede ser el problema?, estoy usando la misma informacion que en el ADODB.


    parte del codigo (funcion Connect):
    Código
    1.        If m_objConnection.OpenConnection(ServerHost, ServerUser, ServerPass, ServerDB, ServerPort) = MY_CONN_OPEN Then
    2.            Connect = True
    3.        Else
    4.            Connect = False
    5.        End If
    6.  

    Código
    1.    mysql.ServerHost = "server"
    2.    mysql.ServerPort = 3306
    3.    mysql.ServerDB = "pcrep"
    4.    mysql.ServerPass = "root"
    5.    mysql.ServerUser = "root"
    6.    Call mysql.Connect()
    7.  

    EDIT:
    ya me fije cual es el problema, ahora no se la solucion!

    el error es: "Client does not support authentication protocol requested by server; consider upgrading MySQL client"

    saludos!
    9  Programación / Programación Visual Basic / ¿como encodeo en el vuelo datos wav a mp3? en: 6 Febrero 2009, 18:48 pm
    Asi como dice el titulo, quiero saber como encodear datos wav a mp3, usando dll o lo que sea.
    La idea es distribuir por red local el sonido de una pc, la cual captura el mismo con el api mmioRead.
    Se podria redistribuir con el formato WAV, pero pesa un huevo (aunque este en lan, me genera demasiada transferencia al pedo)

    Por eso, el buffer de lectura de mmioRead lo queria encodear a mp3 con alguna dll. Me fije en 2 o 3 dlls, y lo unico que hacen, encodean el archivo entero a otro archivo.. nada via buffers internos, todo via archivos..

    en fin, si alguien sabe, que comente

    saludos!
    10  Programación / Programación Visual Basic / [src] SysLink control en VB en: 22 Enero 2009, 02:49 am
    Hola.

    Hoy les presento, con ayudita de leandro y xkiz, este control de usuario.
    Es un control nativo de Windows XP (commcontrols 6!).
    Seguro ya lo conocen de antes:


    No vi nunca este control en VB. Desde la pagina del control en MSDN dicen que no tiene propiedades de color de fondo, ni de color de fuente, pero simplemente se setean como propiedad basandose en el control pariente (en este caso el usercontrol). Lo de la fuente fue mas o menos lo mismo, pero con algunos mensajes, pudimos setearle la fuente como si nada. Ademas tiene un soporte muy basico de transparencia (el cual no recomiendo usar, es el mismo del checkbox).

    Unos screens:



    El picturebox de atras esta para ver si es transparente el control.
    Es muy simple obtener los clicks: tiene un solo evento el control, LinkClick.

    Para mas informacion, pueden ver el codigo del frmMain para ver como estan puestos los links y como es tratado cada click.


    y lo descargas de aca: http://santiagohssl.googlepages.com/SL_REL.rar

    comenten y saludos!
    Páginas: [1] 2
    WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines