Aunque la solución que propone Jesús es correcta, tal vez no se adecúa a su escenario. Si usted lo que quiere es ejecutar un programa YA instalado en la PC y que no requiera modificación previa de los contenidos del pendrive,
lo que necesita es plug and play.
En realidad es sencillo: Nada más procese los mensajes
WM_DEVICECHANGE. Cuando reciba este mensaje en una ventana (puede ser una invisible), analice wParam: Si es
DBT_DEVICEARRIVAL entonces un dispositivo nuevo se ha conectado. Eso quiere decir que
lParam es un puntero a una estructura específica. Para saber si es de tipo
DEV_BROADCAST_VOLUME (que indicaría que es un disco), primero asuma que es de tipo
DEV_BROADCAST_HDR. Si el miembro dbch_devicetype es igual a
DBT_DEVTYP_VOLUME, entonces sí lo es y por lo tanto esta es una notificación plug and play de un disco nuevo que se ha conectado a la PC. Lo que resta es saber la letra. Interprete
lParam como tipo DEV_BROADCAST_VOLUME y examine
dbcv_unitmask. Si más de un disco fue conectado a la vez, entonces habrán más de un bit encendido en este valor. El primer bit es A:, el segundo es B:, etc.
Ah, el campo dbcv_flags le indica si es un disco de red o no.
Jose R. MCP