PureBasic

Forums PureBasic
Nous sommes le Lun 17/Juin/2019 22:51

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 21 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 27/Mar/2011 17:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Fév/2008 16:17
Messages: 453
Localisation: Belgique
Bonjour à tous,
Je ne sais pas si cela à déjà présenté ICI, mais ça existe sur le forum Russe !
Aussi je vous le propose, cela peut toujours être utile...
Le voilà à vous de voir. :)
Code:
; ------------------------------------------
; Envois un fichier dans la poubelle !!!
; Avec demande confirmation !
; ------------------------------------------
#FOF_NOERRORUI=$400
;
Procedure RecycleFile(file$)
  m=AllocateMemory(Len(file$)+2)
  If m
    PokeS(m,file$)
    SHFileOp.SHFILEOPSTRUCT
    SHFileOp\pFrom=m
    SHFileOp\wFunc=#FO_DELETE
    SHFileOp\fFlags=#FOF_ALLOWUNDO|#FOF_NOERRORUI
    ok=SHFileOperation_(SHFileOp) ; Si vous voulez voir cette fonction (F1)
    ;                               n'oubliez pas de ragarder aussi "SHFILEOPSTRUCT"
    FreeMemory(m)
    If ok=0 : ok=1 : Else : ok=0 : EndIf
  EndIf
  ProcedureReturn ok
EndProcedure
LeFichier$="c:\bytes.txt"         ; <<=== Le fichier à expédier à la poubelle !
Debug RecycleFile(LeFichier$)
; ---------------------------
A++
Gerhard

_________________
Windows 7 et Windows 8.1 [b]Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 27/Mar/2011 18:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
En plus court
Code:
Procedure RecycleFile(file$)
  SHFileOp.SHFILEOPSTRUCT
  SHFileOp\pFrom=@file$
  SHFileOp\wFunc=#FO_DELETE
  SHFileOp\fFlags=#FOF_ALLOWUNDO
  SHFileOperation_(SHFileOp)
EndProcedure

RecycleFile("VotreFichier")

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 27/Mar/2011 18:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 06/Avr/2004 10:35
Messages: 1500
Et pour la vider...

Code:
Procedure EmptyTrash(confirm)
  ;confirm = 1 > vide la corbeille avec confirmation
  ;confirm = 0 > vide la corbeille sans confirmation
  If OpenLibrary(0,"shell32.dll") And GetFunction(0,"SHEmptyRecycleBinA")
    CallFunction(0,"SHEmptyRecycleBinA",0,0,1-confirm)
    CloseLibrary(0)
  EndIf
EndProcedure

_________________
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 27/Mar/2011 20:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2741
Localisation: Klyntar
sympa vos code ça peut servir.
Merci :)






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 27/Mar/2011 21:31 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8667
Je n'utilise pas la corbeille mais ces codes peuvent servir, merci ;)

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Dernière édition par Ar-S le Dim 27/Mar/2011 21:33, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 27/Mar/2011 21:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 29/Fév/2008 16:17
Messages: 453
Localisation: Belgique
Ben voilà...
Comme quoi quand on lance une ligne à l'eau c'est souvent pour pêcher quelques chose :D
Ici, elle aura été bonne :lol:
Merci.

_________________
Windows 7 et Windows 8.1 [b]Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 18/Jan/2015 11:23 
Hors ligne

Inscription: Dim 14/Mai/2006 20:41
Messages: 135
Je voulais voir ce que ce petit programme donnait mais y a tellement de changements à y apporter pour le rendre compatible avec la dernière version de PB que j'abandonne .... :(

_________________
.:NY152:.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 18/Jan/2015 11:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
Deux procédures pour supprimer un fichier et vider une poubelle

RecycleFile(file.s) : Envoyer un fichier à la poubelle.

EmptyTrash(confirm) : Envoyer un fichier à la poubelle avec confirmation (Confirm = 1) ou pas (Confirm = 0).

■ Le code
Code:
;Envoyer un fichier vers la poubelle
Procedure RecycleFile(file.s)
  SHFileOp.SHFILEOPSTRUCT
  SHFileOp\pFrom=@file
  SHFileOp\wFunc=#FO_DELETE
  SHFileOp\fFlags=#FOF_ALLOWUNDO ;(#FOF_NOCONFIRMATION)   
  SHFileOperation_(SHFileOp)
EndProcedure

;Vider la poubelle avec confirmation ou pas
Procedure EmptyTrash(confirm)
  ;confirm = 1 > vide la corbeille avec confirmation
  ;confirm = 0 > vide la corbeille sans confirmation
 
  If OpenLibrary(0,"shell32.dll") And GetFunction(0,"SHEmptyRecycleBinA")
    CallFunction(0,"SHEmptyRecycleBinA",0,0,1-confirm)
    CloseLibrary(0)
  EndIf
EndProcedure

;RecycleFile("VotreFichier")

;EmptyTrash(0)
Testé sous PB 5.30 et PB 5.31

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Sam 10/Mar/2018 21:02 
Hors ligne

Inscription: Sam 10/Mar/2018 19:02
Messages: 5
Bonjour,
Ca ne marche absolument pas.
A chaque compilation j'ai "Structure introuvable SHFILEOPSTRUCT"
Merci pour votre aide et la mise à jour car je crois que ces pages ont oublié d'être retirés malgré leur obsolescence.
Bonne soirée


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Sam 10/Mar/2018 22:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 1970
regarde ici
http://forums.purebasic.com/english/vie ... 12&t=3783&

en principe la structure avec Purebasic 5.62 , est declarée

mais si tu utilises une Version plus ancienne
voici la structure a mettre au debut du listing

Code:
Structure SHFILEOPSTRUCT
   hwnd.i
   wFunc.l
   *pFrom
   *pTo
   fFlags.w
   fAnyOperationsAborted.l
   *hNameMappings
   *lpszProgressTitle
EndStructure


_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 11/Mar/2018 15:09 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1564
Bryce a écrit:
Bonjour,
Ca ne marche absolument pas.
A chaque compilation j'ai "Structure introuvable SHFILEOPSTRUCT"
Merci pour votre aide et la mise à jour car je crois que ces pages ont oublié d'être retirés malgré leur obsolescence.
Bonne soirée
Ce site est un forums et pas la documentation en ligne. Aucun article n'est donc retiré car des informations peuvent être encore utiles aux utilisateurs d'anciennes versions.
L'article initial date de 2011... le Windows du moment était Vista. Windows ne gère plus la corbeille de la même manière.
Comme la version de PB actuelle essaye d'assurer une compatibilité depuis XP, il faudrait donc une fonction gérant plusieurs manières d'envoyer vers la corbeille.
Comme cette fonctionnalité est assez peu demandée mais risquerait d'ajouter du poids, du cpu et donc des bugs à la fonction DeleteFile(), il y a peu de chance pour que ce soit implémenté dans une prochaine versions.

:wink:

_________________
HP de 2012 - Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go - Nvidia GT 620 1920x1080 DPI 100%
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 11/Mar/2018 18:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 1970
Je viens de tester le Code posté par Falsam
sous windows 10 et Purebasic 5.62 (version complete) , il marche tres bien

bien sur ce code faisant appel a L'Api windows, il ne marchera pas avec une version DEMO de Purebasic ... :wink:

revoici le code

Code:
Declare recyclefile(file.s)
Declare emptytrash(confirm)


file_effacer.s=OpenFileRequester("chosir un fichier a mettre dans la corbeille","c:\","*.*",0)


RecycleFile(file_effacer.s)

;EmptyTrash(0)

MessageRequester("info" ,"le fichier :"+file_effacer.s+chr(10)+"a été mis dans la corbeille")


;Envoyer un fichier vers la poubelle
Procedure RecycleFile(file.s)
  SHFileOp.SHFILEOPSTRUCT
  SHFileOp\pFrom=@file
  SHFileOp\wFunc=#FO_DELETE
  SHFileOp\fFlags=#FOF_ALLOWUNDO ;(#FOF_NOCONFIRMATION)   
  SHFileOperation_(SHFileOp)
EndProcedure

;Vider la poubelle avec confirmation ou pas
Procedure EmptyTrash(confirm)
  ;confirm = 1 > vide la corbeille avec confirmation
  ;confirm = 0 > vide la corbeille sans confirmation

  If OpenLibrary(0,"shell32.dll") And GetFunction(0,"SHEmptyRecycleBinA")
    CallFunction(0,"SHEmptyRecycleBinA",0,0,1-confirm)
    CloseLibrary(0)
  EndIf
EndProcedure

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 11/Mar/2018 19:37 
Hors ligne

Inscription: Sam 10/Mar/2018 19:02
Messages: 5
Ha ben voilà le problème alors, j'ai une version démo vu que je tape mon tout premier programme en PureBasic et que je test ce langage pour voir s'il est bien. Je ne vais pas acheter un produit sans savoir s'il m'apporte toute satisfaction et du coup c'est mal barré pour un tout premier programme qui était censé virer certains fichiers. Je suis du coup extrêmement déçu de ne pas pouvoir faire une chose aussi simple de mettre un fichier dans la corbeille.
Merci quand même pour votre aide à tous dans ce test peu fructueux au final... :(


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 11/Mar/2018 20:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8667
Salut,
Bah PB est cross plateforme, donc un truc spécifique à Windows utilise les API. C'est aussi simple que ça. Et l'utilisation des API n'est pas inclues dans la démo..
Donc ne blâme pas PB... On te confirme que ça fonctionne et on te file les codes.
(Perso je ne vois pas l’intérêt de passer par la corbeille mais ses besoins.)

Vu le Prix de la licence PB à vie, je crois que tu fais tout de même la fine bouche et que tu te priverais d'un langage puissant.
Après je ne sais pas vers quels genre de soft tu comptes t'orienter. Tu pourrais nous en dire plus afin de confirmer ou d'infirmer que PB est adapté à tes besoins.
Il existe bon nombre d'applications que tu peux tester dans "annonce" qui sont abouties.
P.S : "virer des fichiers" c'est utiliser Delefile().. Les mettre à la corbeille c'est les déplacer dans la corbeille.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Envois d'un fichier à directement à la poubelle !!!
MessagePosté: Dim 11/Mar/2018 21:05 
Hors ligne

Inscription: Sam 10/Mar/2018 19:02
Messages: 5
Voici un contournement qui permet de mettre facilement dans la corbeille via une commande tiers. Je la donne pour info à ceux qui voudraient mettre facilement un fichier dans la corbeille ou qui ont une version démo.

Prérequis au choix, une deux deux solutions :

- Télécharger recycle-v0.2.exe sur https://github.com/kizzx2/cmd-recycle/downloads
à renommer recycle.exe et le mettre dans le dossier windows si on veut l'appeler facilement de partout.
ou
- Installer le célèbre NirCmd via http://www.nirsoft.net/utils/nircmd.html
à mettre aussi dans le dossier Windows (3 fichiers, nircmd.chm, nircmd.exe et nircmdc.exe)

Donc ensuite, et voilà qui devient facile, on lance sur PureBasic la commande suivante :

pour recycle :
Code:
RunProgram("recycle.exe","chemin/monfichier","")

pour nircmd :
Code:
RunProgram("nircmd.exe","moverecyclebin chemin/monfichier","")


Facile et réalisable ensuite en une seule ligne dans PureBasic.
Voilà pour ceux que çà intéresse.
Bonne continuation.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 21 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye