Ver Mensaje Individual
  #18  
Antiguo 10-12-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Reputación: 21
champy Va por buen camino
Al fin. Funcionó.

La función MicroSDPressent de eficsa me da True cuando la tarjeta está disponible sin sacar el mesajito del sistema.

SetErrorMode no estaba sirviendo de mucho, lo probe con todas las flags, supongo que por que no se trata de una excepcion propiamente dicha, es más bien un "Dialogo del sistema" indicando que la unidad no tiene disco.



En cualquier caso, ya está solucionado

Solo modifiqué la función para que me haga de comprobación de una unidad concreta, y listo, problema resuelto

Código Delphi [-]
function MicroSDPresent(i : char): Boolean;
var
  FName: string;
  Error: LongWord;
  Hnd  : THandle;
begin
 Error := SetErrorMode(SEM_FAILCRITICALERRORS);
  Result:= False;
    if GetDriveType(PChar(i+':\')) = DRIVE_REMOVABLE then
    begin
      FName:= Format('\\.\%s:\%s',[i,'@@@prueba@@@.txt']);
      Hnd:= CreateFile(PChar(FName),
              GENERIC_READ, 0, nil, CREATE_ALWAYS,
              FILE_ATTRIBUTE_NORMAL, 0);
      if Hnd <> INVALID_HANDLE_VALUE then
      begin
        Result := True;
        CloseHandle(Hnd);
        DeleteFile(PChar(FName));
      end;
    End;
  SetErrorMode(Error);
end;

Muchas gracias a todos los interesados, casi me sabe mal por cuanto me habeis ayudado.

Última edición por champy fecha: 10-12-2012 a las 08:09:54.
Responder Con Cita