Função Limpar a Lixeira do Windows

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Função Limpar a Lixeira do Windows

Mensagem por asimoes »

Função para limpar a lixeira do windows

EmptyTrash()

Código: Selecionar todos

#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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função Limpar a Lixeira do Windows

Mensagem por JoséQuintas »

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

Código: Selecionar todos

#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: Selecionar todos

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/window ... ecyclebina

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder