In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Letra asignada al insertar un pen drive

Foro público de Xailer en español
Responder
Rich
Mensajes: 75
Registrado: Mar Mar 12, 2013 1:50 am
Contactar:

Letra asignada al insertar un pen drive

Mensaje por Rich »

Amigos del foro:
Les pido su ayuda para resolver lo siguiente: Necesito saber desde mi aplicación en Xailer que letra le fue asignada al insertar un pen drive cuyo volumen es F8A2-CBAF. Desde la aplicación lo pedo ver claramente en una ventana en modo consola con la siguiente instrucción:
x := WinExec( 'usb.bat' )
Donde usb.bat es el siguiente archivo de lotes:
@echo off
setlocal
set wmi='wmic logicaldisk where "volumeserialnumber='F8A2CBAF'" get caption'
for /f "skip=1 delims=" %%A in (%wmi%) do (
for /f "tokens=1 delims=:" %%B in ("%%A") do (set drive=%%B)
)
echo %drive%
pause
La ayuda que les pido se refiere a cómo hacer para que el valor de %drive% pueda ser capturado en una variable dentro de la aplicación.
Saludos amigos.
hgarciaj
Mensajes: 107
Registrado: Jue Sep 23, 2010 12:44 am

Letra asignada al insertar un pen drive

Mensaje por hgarciaj »

Se me ocurren dos soluciones:
1 antes de ejecutar tu programa ejecuta el bat y dentro del bat ejecuta el programa con el parámetro %drive%
2. Si ejecutas el bat dentro del programa entonces graba %drive% en un archivo ini y desde tu programa consulta el valor de dicho archivo
Saludos
Héctor García
Rich
Mensajes: 75
Registrado: Mar Mar 12, 2013 1:50 am
Contactar:

Letra asignada al insertar un pen drive

Mensaje por Rich »

Buena idea Hgarciaj, la pondré en práctica.
Gracias por responder.
Saludos amigos.
joselalinf
Mensajes: 291
Registrado: Jue Ene 31, 2013 1:10 pm

Letra asignada al insertar un pen drive

Mensaje por joselalinf »

Sergio,
con la función GetDrives (la tienes en la ayuda) y GetVolumeInformation()
del API puedes hacerlo. No lo he probado a fondo pero así­ deberí­a funcionar
sin necesidad de usar comandos externos:
LOCAL cDrive
LOCAL cSerie
LOCAL aDrives := GetDrives( 2 ) // Lista de unidades removibles
FOR EACH cDrive IN aDrives
cSerie := GetVolumeInfo( cDrive + "" )
IF cSerir == "ElQueBuscas"
MsgInfo( "Unidad: " + cDrive + " Serie: " + cSerie )
ENDIF
NEXT
#pragma BEGINDUMP
#include <windows.h>
#include <xailer.h>
//---------------------------------------------------------- ----------------
HB_FUNC( GETVOLUMEINFO )
{
const char * cDrive = hb_parc( 1 );
char szName[15];
DWORD dwSerial;
DWORD dwMaxComp;
DWORD dwFlags;
char szFileSys[10];
memset( szName, 0, sizeof( szName ) );
memset( szFileSys, 0, sizeof( szFileSys ) );
if( GetVolumeInformation( cDrive, szName, sizeof( szName ) ,
&dwSerial, &dwMaxComp, &dwFlags,
szFileSys, sizeof( szFileSys ) ) )
{
//hb_retnl( dwSerial ); // Si lo quieres devolver numérico
hb_retc( hb_strupr( X2Hex( dwSerial, 4 ) ) );
}
else
{
hb_retc( "" );
}
}
//---------------------------------------------------------- ----------------
#pragma ENDDUMP
Saludos,
José Lalí­n
Rich
Mensajes: 75
Registrado: Mar Mar 12, 2013 1:50 am
Contactar:

Letra asignada al insertar un pen drive

Mensaje por Rich »

Gracias José.
Esta solución es más robusta, la pondré en funcionamiento de inmediato.
Saludos amigos.
Responder