Hola.
La verdad es que es la primera vez que intento acceder a un celular. Pero pensando en que era un dispositivo extraible, este código que uso al efecto, me detecta correctamente si está conectado o no:
Código Delphi
[-]
function OpenUSB(aDrv: char): THandle;
var
Root, Vol: string;
begin
Root := aDrv + ':\';
Vol := Format('\\.\%s:', [aDrv]);
Result := CreateFile(PChar(Vol),
GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, 0, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenUSB('F') = INVALID_HANDLE_VALUE then
raise Exception.Create('Error en la conección.')
else
ShowMessage('Todo bién, continuamos...');
end;
Ahora convengamos, sé que es la unidad 'F' por que previamente me fije cuál era. Si agrego un pen drive, situado en la unidad 'E' y uso la función
OpenUSB con el argumento 'E' funciona igualmente. Por otro lado estoy accediendo a la memoria del celular no al celular mismo....
La cosa debe pasar por la cadena '\\?\USB#Vid_058b&Pid_0015#5&25ea51ff&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed'... Creo, como
AzidRain, que es propia de cada teléfono y realmente no sé como obtenerla.
Como dato adicional, en mi caso, cambiando el '?' por la letra 'F' se queda pensando un poco y luego lanza el error INVALID_HANDLE_VALUE.
Saludos.