Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Arconte en 10 Diciembre 2011, 16:27 pm



Título: [resuelto] duda sobre uso de byval y strptr en parametros string
Publicado por: Arconte en 10 Diciembre 2011, 16:27 pm
Lo usual es q para las funciones a las q se le pasa cadenas como setwindowtext , su parametro string deberi ir como byval ( byval nuevoTitulo as string) para de esa forma darle la direccion de los datos . Pero tengo entendido q la funcion strptr regresa la direccion de los datos de una var string, entonces si  declaro el parametro  como long (byval nuevoTitulo as long) y al llamar a la api pasandole lo q devuelve strptr  funcionara. Pero no, si hago eso solo se  pone el primer caracter de mi string en la barra de title, pero con la version unicode de la api (setwindowtextW) si funciona; no lo entiendo bien, pero me parece q las cadenas se guardan en unicode y otra copia en ansi, y el byval devuelve el addres a la copia ansi, y strptr devuelve el addres a la copia unicode.  Mi codigo lo ejecute en pc con windows seven ultimate (kizas ese es el problema)


Título: Re: duda sobre uso de byval y strptr en parametros string
Publicado por: raul338 en 10 Diciembre 2011, 18:29 pm
Si llamas a una API con as string, le envia un puntero del string en version ANSI, StrPtr te da un puntero en Unicode

Si llamas a la API con ByRef (o sin poner nada) le pasas un puntero del puntero x'D, en cambio con ByVal el mismo visual basic se encarga de enviar un solo Puntero del string


Título: Re: duda sobre uso de byval y strptr en parametros string
Publicado por: Arconte en 10 Diciembre 2011, 21:12 pm
Confirmaste mi sospecha, ahora lo entiendo.
Salu2