Clipper On Line • Ver Tópico - Função Limpar a Lixeira do Windows

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

 

Função Limpar a Lixeira do Windows

Mensagempor asimoes » 09 Jul 2019 10:17

Função para limpar a lixeira do windows

EmptyTrash()

#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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4208
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 294 vezes
Mens.Curtidas: 210 vezes

Função Limpar a Lixeira do Windows

Mensagempor JoséQuintas » 11 Jul 2019 17:55

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

#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.

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.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: RamonXHB e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro