Clipper On Line • Ver Tópico - Função Limpar a Lixeira do Windows
Mudar para estilo Clássico
Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.
Postar uma resposta

Função Limpar a Lixeira do Windows

09 Jul 2019 10:17

Função para limpar a lixeira do windows

EmptyTrash()

Código:
#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"
#include <Shellapi.h>

HB_FUNC( EMPTYTRASH )
{
SHEmptyRecycleBin( NULL,
                   NULL,
                   SHERB_NOCONFIRMATION |
                   SHERB_NOPROGRESSUI   |
                   SHERB_NOSOUND );
}

#pragma ENDDUMP

Função Limpar a Lixeira do Windows

11 Jul 2019 17:55

Dá no mesmo, mas apenas a título de curiosidade.

Código:
#define SHERB_NOCONFIRMATION 0x00000001
#define SHERB_NOPROGRESSUI 0x00000002
#define SHERB_NOSOUND 0x00000004

FUNCTION wapi_EmptyTrash( cPath )

   LOCAL xResult

   xResult := CallDllStd( "Shell32.dll", "SHEmptyRecycleBinA", NIL, cPath, SHERB_NOCONFIRMATION + SHERB_NOPROGRESSUI + SHERB_NOSOUND )

   RETURN xResult


Deixei separado para o caso de usar pra outras coisas, no estilo que coloquei naquela classe pra RMChart.

Código:
FUNCTION CallDllStd( cDll, cName, ... )

   LOCAL nHandle, xResult

   nHandle := hb_LibLoad( cDll )
   xResult := hb_DynCall( { cName, nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
   hb_LibFree( nHandle )

   RETURN xResult


Só pesquisei depois que postou aqui.
E peguei informação daqui:

https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shemptyrecyclebina

Parece que dá pra escolher se quer limpar a lixeira toda, ou apenas a lixeira referente a um disco.
No meu teste, o arquivo excluído era de D:, e ao indicar "C:\" não limpou, só limpou indicando "D:\" ou nenhum.

Nota:
só não sei se é uma boa fazer isso no aplicativo, já que o usuário pode querer alguma coisa de volta.
Postar uma resposta