Buenas! como comenté en respuesta a otro hilo en el foro de intrusión, me surgió la idea de cómo hacer una aplicación de este tipo.

Bien comentar que no he investigado sobre el tema, pero básicamente se puede realizar utilizando los notificadores de eventos de Windows. Pero dado que aun no he tenido tiempo, os dejo un método muy sencillo y eficaz, además de no consumir muchos recursos.

El método sirve para detectar un dispositivo de almacenamiento (pen drive) en un sistema, claro que ésto es extensible a cualquier dispositivo USB.

1er paso: Detectar unidades activas
2º paso: Guardarlas en una array
3er paso: Cada intervalo de tiempo, comprobar si las unidades activas en el instante actual han cambiado (se han añadido o quitado unidades extraibles)

Esto se puede llevar a cabo mediante la API: GetDriveType(Raiz: PChar), que devuelve uno de los siguientes valores:

DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVABLE = 2; // este es el nuestro, para los dispositivos de almacenamiento
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

Entonces, el algoritmo sería algo así como:

for LetraUnidad:='A' to 'Z' do
if GetDriveType(PChar(LetraUnidad+':\'))=DRIVE_REMOVA BLE then
ShowMessage('Hola desde '+LetraUnidad+':\');
end;
end;

El algoritmo está implementado en delphi. La idea se entiende.

Evidentemente, habria que realizar esta tarea al principio de la ejecución del programa, guardarla en un array, y cada intervalo de tiempo volver a capturar dichas unidades, si el número de unidades detectadas es menor que el que tenemos en el array, entonces actualizamos el array.

Para que en vez de mostrar un mensajito de saludo, se realice una acción simplemente habrá que programar dicha acción dentro de nuestra aplicación.

Dadme 30 minutos y os subo un programa de ejemplo

Un saludo