visual tutorial studio samples net ejemplos aplicaciones c# .net vb.net winapi visual-c++

c# - tutorial - API de Windows y lenguajes.net



visual studio 2010 samples (3)

La gente siempre me aconseja que si estoy haciendo alguna aplicación que debería usar algunas API de Windows para hacer cualquier trabajo de nivel de proceso, debo usar VC ++ y ningún otro lenguaje .net.

¿Hay algo de cierto en eso?

¿Se puede hacer todo lo que se puede hacer usando VC ++ en otros lenguajes .net también?

¿Son todos los lenguajes .net iguales cuando se comparan sus capacidades?


Cuando comencé a programar en .Net, estaba usando C ++ / CLI, ya que venía de un fondo mínimo de Win32 C ++. Lo que encontré fue que tenía dolores de cabeza porque no entendía las líneas finas y los límites entre C ++ / CLI y Win32 C ++. No es tan fácil como parecen interpolar entre los dos. Cuando aprendí sobre P / Invoke, hice mi vida mucho más fácil y finalmente comencé a progresar en mis habilidades. P / Invoke está bien y no necesita necesariamente C ++ / CLI para hacer eso. En mi opinión, o bien utilizas Win32 C ++ por completo para cosas de bajo nivel, o .Net para cosas de alto nivel, y realmente no recomiendo intentar interoperar Win32 C ++ con C ++ / CLI a menos que sea absolutamente necesario. Incluso entonces, probablemente sea más fácil hacer una DLL Win32 con lo que necesita y P / Invocar la DLL desde .Net, o viceversa. Recuerde siempre elegir la herramienta adecuada para el trabajo.


Para la mayoría de las tareas donde las bibliotecas de clase no brindan ayuda, el uso de P / Invoke generalmente es correcto. Hay muchas API "difíciles" que se benefician de un simple contenedor C ++ / CLI. Por lo general, lo mejor es hacer lo mínimo posible en el código C ++ / CLI, masajeando de manera efectiva lo que alguna vez es la fealdad para C #, VB.NET, etc.


Si necesita trabajar con código nativo bastante íntimamente, es probable que C ++ le haga la vida más fácil. Sin embargo, no hay nada intrínsecamente incorrecto al usar P / Invoke para llamar a la API de Win32 desde C #, VB.NET, F #, etc.

No todos los lenguajes .NET son iguales en términos de capacidades, aunque C # y VB.NET son en gran parte equivalentes en funcionalidad. Sé que hay algunas cosas que expone C ++ / CLI que no están expuestas por C # o VB.NET. No sé si lo contrario es cierto. (No tengo idea de cómo es C ++ / CLI para expresiones lambda, métodos de extensión, etc.)