Miércoles, 5 de Marzo de 2008 por
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.





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