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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>