Miércoles, 5 de Marzo de 2008 por climens

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!

Compartir | meneame | fresqui | del.icio.us | digg | technorati
Tags: , , | Sin comentarios

Sin comentarios en “PInvoke.net, llamadas a la API Win32 desde .NET”

Deja tu comentario