2010-05-30 21 views
10

Tengo una aplicación winform C# que cuando se usa spy ++, da "WindowsForms10.Window.8.app.0.33c0d9d" como nombre de clase. ¿Hay alguna manera de cambiar eso por algo más amigable?winform friendly class name

Respuesta

0

si necesita nombres descriptivos para sus controles, use las propiedades de Accesibilidad. esa es la manera común.

+0

Necesito un nombre de clase más amigable para que pueda descubrirlo usando FindWindowEx ... – user156144

+0

, entonces debe sobrescribir CreatePrams pero si devuelve foo generará ese nombre antipático nuevamente. – Jack

5

No hay. El último número hexadecimal es el código hash del AppDomain que posee la ventana. El dígito anterior comienza en 0 pero aumenta si se crearon otras ventanas con el mismo nombre de clase. El número anterior es el valor del estilo de clase. Claramente, solo puedes adivinar este nombre correctamente si tienes conocimiento interno de las variables cuyo valor solo es accesible dentro del proceso.

Tampoco puedes cambiarlo. Ignoraría la propiedad CreateParams de la ventana, pero establecer la propiedad ClassName hará que Windows Forms busque una clase de ventana existente con ese nombre. Y no lo encuentras, bombardeando tu programa.

Tampoco puede anularlo. La lógica está integrada en un método privado de la clase NativeWindow. Claramente, esto no fue diseñado para facilitar el uso de FindWindowEx().

Siempre que cambiar el código fuente sea una opción, hay maneras mucho mejores de configurar una comunicación entre procesos más allá del uso de mensajes de Windows. Canalizaciones con nombre, enchufes, Remoting, WCF.