PInvoke.net, llamadas a la API Win32 desde .NET

Hoy me he encontrado en una situación particular: mi programa .NET llama a un ejecutable de hace ya unos cuantos años para pasarle unos datos por línea de comandos entre los cuales había unas rutas físicas a unos archivos.

Todo parecía funcionar en las pruebas pero al poner las rutas largas con espacios el ejecutable no era capaz de manejarlas y ni siquiera se quejaba, simplemente no hacía nada. Así que he pensado: ¿será por las rutas? ¿podría pasarle las rutas en el viejo formato 8.3 del DOS?

Me he puesto a Googlear y existe una función del sistema operativo Windows para tal efecto: GetShortPathName en kernel32.dll… interesante. Pero por lo visto en las clases de .NET no hay nada para hacerlo directamente, así que he seguido googleando hasta llegar a PInvoke.net.

En esta página se aglutinan cientos o miles de llamadas a la API de Windows con su llamada en C# y en VB.NET así como en C++ y por si fuera poco en el caso de GetShortPathName incluyen una funcioncilla ToShortPathName a la que simplemente hay que pasarle la ruta larga a convertir. Realmente práctico, desde luego un enlace a tener en cuenta.

Evidentemente esta información se la puede cocinar uno mismo viendo la definición en MSDN pero es más rápido si ya te lo dan mascadito.

Link | PInvoke.net: the interop wiki!

Si te ha gustado esta entrada, por favor deja un comentario o suscríbete al RSS para que puedas recibir todas las novedades en tu lector de feeds favorito.
This entry was posted in Programación and tagged , , . Bookmark the permalink.

Leave a reply