extraer - ¿Cómo puedo convertir un tipo IntPtr no administrado a una cadena de ac#?
string c# ejemplos (2)
La respuesta anterior fue excelente y casi resolvió el mismo problema para mí, pero ... Obtuve lo que parecen ser caracteres chinos del método (湵 慮 慮 ›䌢 ⸢). Lo que tuve que hacer fue usar el método Marshal.PtrToStringAnsi (IntPtr) como se describe aquí: http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.ptrtostringansi.aspx y aquí: http://answers.unity3d.com/questions/555441/unitys-simplest-plugin-print-does-not-work.html .
Una vez que hice el cambio, mi cadena estaba en inglés una vez más. No estoy seguro de por qué estaba sucediendo, pero ya está!
Soy nuevo en C # (de un fondo nativo de C ++) y estoy tratando de escribir una pequeña interfaz de usuario para imprimir mensajes de difusión de Windows, entre otras cosas. He anulado el bucle de mensajes WndProc predeterminado en mi programa de C # así:
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
protected override void WndProc(ref Message m)
{
// Listen for operating system broadcasts.
switch (m.Msg)
{
case WM_SETTINGCHANGE:
this.richTextLog.Text += "WM_SETTINGCHANGE - lParam=" + m.LParam.ToString() + "/n";
break;
}
base.WndProc(ref m);
}
Lo que me gustaría saber es cómo obtener una representación de cadena del objeto lParam que es de tipo IntPtr. Esencialmente es un vacío * en la tierra de C ++, ¿puedo lanzarlo dentro de C # de alguna manera? Presumiblemente hacerlo es inherentemente inseguro.
Marshal.PtrToStringAuto
Method (IntPtr)
Asigna una
String
administrada y copia todos los caracteres hasta el primer carácter nulo de una cadena almacenada en la memoria no administrada.