Para los interesados en saber cómo extraer un pendrive de forma segura con Delphi, aquí os dejo un documento con varias funciones que os resolverán esta tarea.
function OpenVolume(ADrive: char): THandle;
function LockVolume(AVolumeHandle: THandle): boolean;
function DismountVolume(AVolumeHandle: THandle): boolean;
function PreventRemovalOfVolume(AVolumeHandle: THandle; APreventRemoval: boolean): boolean;
function AutoEjectVolume(AVolumeHandle: THandle): boolean;
function EjectVolume(ADrive: char): boolean;
También se puede extraer el pendrive mediante llamada a la función HotPlugEjectDevice de la librería hotplug.dll de Windows.
Su definición en Delphi es:
function HotPlugEjectDevice(hwndParent: Cardinal; lpDeviceInstanceId: PWideChar): LongBool; stdcall external 'hotplug';
El código con WinExec es el siguiente:
WinExec(PChar('c:\windows\system32\rundll32 hotplug.dll,HotplugEjectDevice
y para hacer aparecer la ventana de desconectar hardware sería:
WinExec(PChar('c:\windows\system32\rundll32 shell32.dll,Control_RunDLL hotplug.dll'),SW_SHOWNORMAL);
El winexec no me hace nada...:C
ResponderEliminarMe sale una ventana diciendo que no encuentra la hotplug.dll
hotplug.dll debe estar en c:\windows\system32
ResponderEliminarBuenas amigo, una consulta como lo puedo usar en lazarus, pues me expulsa las memorias usb, pero no los discos duros usb, saludos.
ResponderEliminar