Marshal & Hwnd

28/10/2003 - 22:49 por Juan Irigoyen | Informe spam
Tengo el siguiente codigo:

byte[] data = new byte[14];
Marshal.Copy(this.Hwnd, data, 0, 4);

Este codigo compila bien pero cuando lo ejecuto recibo un error al realizar
la operación con Marshal.

¿ Como puedo copiar this.Hwnd (que es el Handle de un formulario que hereda
de MessageWindow de tipo IntPtr)

hacia los primeros 4 bytes de la variable data ?

Gracias.

Preguntas similare

Leer las respuestas

#1 Juan Cristóbal Olivares C.
28/10/2003 - 23:08 | Informe spam
¿Cuál es el error? ¿Podrías postear el trace?

Atte,
Juan C. Olivares
www.juancri.com

"Juan Irigoyen" escribió en el mensaje
news:hvBnb.58206$
Tengo el siguiente codigo:

byte[] data = new byte[14];
Marshal.Copy(this.Hwnd, data, 0, 4);

Este codigo compila bien pero cuando lo ejecuto recibo un error al


realizar
la operación con Marshal.

¿ Como puedo copiar this.Hwnd (que es el Handle de un formulario que


hereda
de MessageWindow de tipo IntPtr)

hacia los primeros 4 bytes de la variable data ?

Gracias.


Respuesta Responder a este mensaje
#2 Tomas Restrepo \(MVP\)
29/10/2003 - 02:14 | Informe spam
Hola Juan,


byte[] data = new byte[14];
Marshal.Copy(this.Hwnd, data, 0, 4);

Este codigo compila bien pero cuando lo ejecuto recibo un error al


realizar
la operación con Marshal.

¿ Como puedo copiar this.Hwnd (que es el Handle de un formulario que


hereda
de MessageWindow de tipo IntPtr)

hacia los primeros 4 bytes de la variable data ?



Como lo tienes no te va a funcionar, ya que dado que Hwnd es IntPtr,
entonces el framework piensa que es el valor de un puntero, y en vez de
copiar el valor del handle, intenta copiar los primeros 4 bytes de memoria a
los que "apunta", y por eso fallaría

En vez, de esto, yo recomendaría de pronto hacer más bien una llamada a
BitConverter.GetBytes
(this.Hwnd.ToInt32());

Nota que este código no funcionaría nunca en 64-bits (o mas bien causaría
problemas ya que no copiaria el valor completo).

Tomas Restrepo

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida