by tsales » Mon Jan 07, 2008 6:19 pm
Rafael
Lo puedes hacer utilizando las funciones RAPI.
Prueba con esto.
FUNCTION FErasePPc( cFile, lMsg )
LOCAL lVRet := RAPI_BORRAFICHERO_PDA( AnsiToWide(cFile), IF(lMsg=NIL,.F.,lMsg) )
IF lMsg
IF lVRet
MSGINFO(cFile + " Fichero Borrado correctante")
ELSE
MSGINFO(" El Fichero " + cFile + " NO ha podido ser Borrado")
ENDIF
ENDIF
RETURN lVRet
HB_FUNC( RAPI_BORRAFICHERO_PDA )
{
typedef HRESULT (WINAPI * _CeRapiInitEx_) (RAPIINIT *) ;
typedef HRESULT (WINAPI * _CeRapiUninit_) (void);
typedef BOOL (WINAPI * _CeDeleteFile_) (LPCWSTR);
typedef DWORD (WINAPI * _CeGetLastError_) (void);
BOOL lMuestraErrores = FALSE ;
HINSTANCE lRapi;
_CeRapiInitEx_ CeRapiInitEx;
_CeRapiUninit_ CeRapiUninit;
_CeDeleteFile_ CeDeleteFile;
_CeGetLastError_ CeGetLastError;
HRESULT lConnected;
RAPIINIT ri;
BOOL lResultado;
// Cargamos la librería
lRapi = LoadLibrary ( "Rapi.dll" );
if ( lRapi == NULL ) {
MessageBox(NULL,"Error:no cargada librería","Rapi",MB_OK);
hb_retl(FALSE);
return ;
}
// Cargamos las funciones
CeRapiInitEx = (_CeRapiInitEx_) GetProcAddress((HMODULE) lRapi,"CeRapiInitEx");
CeRapiUninit = (_CeRapiUninit_) GetProcAddress((HMODULE) lRapi,"CeRapiUninit");
CeDeleteFile = (_CeDeleteFile_) GetProcAddress((HMODULE) lRapi,"CeDeleteFile");
CeGetLastError = (_CeGetLastError_) GetProcAddress((HMODULE) lRapi,"CeGetLastError");
// Conectamos
ri.cbSize = sizeof(RAPIINIT);
ri.heRapiInit = NULL;
ri.hrRapiInit = NULL;
if(FAILED(CeRapiInitEx(&ri))) {
FreeLibrary(lRapi);
hb_retl( FALSE );
return;
}
if(WaitForSingleObject(ri.heRapiInit, 3000) != WAIT_OBJECT_0) {
CeRapiUninit();
FreeLibrary(lRapi);
hb_retl( FALSE ) ;
return;
}
lResultado = CeDeleteFile( (LPCWSTR)hb_parc(1) );
// Control de Errores
if( !lResultado ){
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
CeGetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Mostramos el error (si así lo piden)
lMuestraErrores = (ISLOG(2) ? (BOOL) hb_parl(2) : lMuestraErrores);
if( lMuestraErrores ) MessageBox( NULL, (LPTSTR)lpMsgBuf, L"Error", MB_OK | MB_ICONINFORMATION );
// Liberamos memoria
LocalFree( lpMsgBuf );
}
// Desconectamos
CeRapiUninit();
// Descargamos librería
FreeLibrary(lRapi);
hb_retl( lResultado );
}
Saludos
Toni Sales