| Videz votre presse papier | |
|
|
Auteur | Message |
---|
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Videz votre presse papier Ven 24 Nov 2017 - 6:41 | |
| Videz votre presse papier avec ce code execute_wait "cmd.exe| /D /c @Echo Off | clip" avant apres | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Videz votre presse papier Ven 24 Nov 2017 - 16:09 | |
| rudement inintéressant ça fait peur!!! après certain pleure que je ne dévoile pas mes code idem pour l'astuce que j'ai posté | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Videz votre presse papier Ven 24 Nov 2017 - 17:11 | |
| salut pascal10000 Ce code fait exactement la même chose sans passer par CMD: - Code:
-
clipboard_string_copy "" Tu peux le vérifier en ouvrant le presse-papier(Executer--->clipbrd.exe) | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Videz votre presse papier Ven 24 Nov 2017 - 17:42 | |
| bsr dsl de te contre dire mais ça ne fonctionne seulement si ce sont des strings si ce son des photos ou autre ça ne fonctionne pas.
sélectionne les icones de ton bureau et fait des essais et tu verra le resulta bon soir | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Videz votre presse papier Ven 24 Nov 2017 - 17:44 | |
| Tu as raison, Pascal10000. Vider le presse-papier par programme, quelque soit son contenu, c'est une vraie galère. J'e, sais quelque chose puisque j'essaie de le faire dans KGF.dll et ça ne marche pas toujours. Et donc, je garde ton astuce pour un éventuel emploi dans mes codes. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Videz votre presse papier Ven 24 Nov 2017 - 18:22 | |
| J'avais fait des essais avant de poster la commande cité plus haut. J'arrive à vider le presse-papier entièrement de cette manière; Etant sous windows XP et c'est peut être pour cela que je n'ai pas ce pb.
Je ne trouve pas logique que "l'ancien" contenu du presse-papier ne soit pas purgé par le "nouveau" contenu du presse-papier. Ca ne doit vraiment pas être pratique lorsque l'on a beaucoup de copier/coller à faire dans un logiciel du type 'paint.net', les images risquent se mélanger.
EDIT: En effet, c'est bien parceque je suis sous windows XP que je n'est pas ce pb. Le presse papier a évolué avec les nouvelles versions de windows, acceptant "plusieurs items" maintenant. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Videz votre presse papier Ven 24 Nov 2017 - 19:44 | |
| J'ai essayé ta méthode silverman (CLIPBOARD_STRING_COPY "") aussi bien sous Windows 7 que sous Windows 10. Dans les deux cas le presse-papier est bien nettoyé, aussi bien pour des images que pour du texte. Enfin, disons plutôt que le 'coller' ne marche plus après, il ne trouve plus les éléments. Est-ce qu'il y a 'nettoyage' physique, je ne sais pas. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 1:17 | |
| Ça marche à tous les coups et sans faille ! - Code:
-
rem ============================================================================ rem Vider le contenu du presse-papier rem La SUB Vider_Presse_Papier() utilise des fonctions de l’API de Windows. rem Elle marche donc à tous les coups et sans faille ! rem ============================================================================ Vider_Presse_Papier() message "Le presse-papier est vide" end rem ============================================================================ SUB Vider_Presse_Papier() dim_local ret% dll_on "user32" ret% = dll_call1("OpenClipboard",0) : ' ouvrir le presse-papier if ret% = 0 then message "Impossible d'ouvrir le presse-papier" : exit_sub ret% = dll_call0("EmptyClipboard") : ' vider le presse-papier ret% = dll_call0("CloseClipboard") : ' fermer le presse-papier dll_off END_SUB rem ============================================================================
Dernière édition par papydall le Sam 25 Nov 2017 - 2:11, édité 1 fois | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 2:09 | |
| @Klaus Clipboard.Clear; En Delphi ne convient pas ? NB : Mes connaissances en Delphi sont vraiment modestes ! J’ai rencontré ce code qui indique si le presse-papier contient une image ou un texte. - Code:
-
procedure TForm1.Button1Click(Sender: TObject); var MyHandle: THandle; begin Clipboard.Open; if Clipboard.HasFormat(CF_TEXT) then begin MyHandle:=Clipboard.GetAsHandle(CF_TEXT); Memo1.Lines.Add(StrPas(GlobalLock(MyHandle))); GlobalUnlock(MyHandle); end; if (Clipboard.HasFormat(CF_BITMAP)) or (Clipboard.HasFormat(CF_PICTURE)) then Image1.Picture.Assign(Clipboard); Clipboard.Close; end;
Qu’en penses-tu ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 8:50 | |
| - Citation :
- Clipboard.Clear;
En Delphi ne convient pas ? Comme je l'ai dit dans un autre post hier, c'est comme ça que je fais actuellement. Malheureusement, cela ne marche pas à tous les coups, et je n'ai pas réussi à comprendre pourquoi. - Citation :
- SUB Vider_Presse_Papier()
dim_local ret% dll_on "user32" ret% = dll_call1("OpenClipboard",0) : ' ouvrir le presse-papier if ret% = 0 then message "Impossible d'ouvrir le presse-papier" : exit_sub ret% = dll_call0("EmptyClipboard") : ' vider le presse-papier ret% = dll_call0("CloseClipboard") : ' fermer le presse-papier dll_off END_SUB Cette piste est intéressante. Je n'ai pas encore essayé la fonction EmptyClipboard de User32.dll, et c'est ce que je vais faire maintenant. Je rencontre de temps en temps ce problème dans Synedit_Editor, au démarrage. Ma solution pour le moment consiste à le relancer... un peu pauvre. Donc, merci pour le tuyau ! Pour identifier le contenu du presse-papier, ta solution est opérationnelle, quoique (très) partielle. Elle ne prend en compte que deux formats bien particuliers, alors qu'il y en a une multitude. Mais oui, dans les fonctions, j'utilise les identifiants de format du presse-papier pour gérer son cintenu, et j'ai même mis à disposition une fonction dans KGF.dll pour connaître le format actuel: http://klauspanoramic.esy.es/GetClipboardFormat.html#GetClipboardFormat_frdans les "Fonctions diverses". Elle retourne 25 codes format différents... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 11:04 | |
| Je n'ai pas essayé, mais je suppose que la fonction GetClipboardFormat renvoie 0 quand le presse-papier est vide, mais elle renvoie également 0 quand le format contenu est inconnu, donc le 0 renvoyé ne peut pas être un critère absolu de presse-papier vide ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 11:22 | |
| Exact. D'ailleurs, je viens de mettre une nouvelle version de KGF.dll en ligne, avec une amélioration de ma fonction ClearClipboard, selon une infirmation de Papydall, que je salue au passage. Cette fonction efface le presse-papier, quelque soit son contenu. Et, accessoirement, elle en rend le programme appelant propriétaire. | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 11:23 | |
| bjr a tous
merci papydall ton code fonctionne parfaitement nickel chrome | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 12:39 | |
| Le but est d'effacer le presse-papier, quel que soit son contenu, de quelque façon que ce soit. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 14:46 | |
| Bien voilà ! En partageant, notre savoir ne fait qu’augmenter. Merci à tous les participants.
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 15:32 | |
| Je vais peut-être dire une bêtise, mais personnellement je n'ai jamais éprouvé le besoin de vider le presse-papier.
J'ai toujours considéré que le fait d'y 'copier' un élément remplaçait son contenu par ce nouvel élément, qui y demeure jusqu'à ce qu'on y copie un nouvel élément, lequel remplace entièrement le précédent. Et que si par hasard une erreur est signalée au moment de la 'Copy' (élément trop volumineux pour être copié dans le presse-papier), c'est parce que l'élément est effectivement trop volumineux pour l'espace alloué par le système au presse-papier et non parce qu'il est déjà occupé...
J'ai tout faux ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 16:49 | |
| - Citation :
- J'ai tout faux ?
Oui et non. Non, tu ne peux pas raisonner en termes de "volume" pour le presse-papier (voir mon post de ce jour ici). Par contre, le presse-papier peut être "occupé" par un autre programme, et de ce fait, il peut être impossible de copier quelque chose dedans. C'est pour cette raison que ma fonction ClearClipboard prend possession du presse-papier avant d'en effacer le contenu. Et oui, si tu es propriétaire du presse-papier (la dernière opération "copier" est issue de ton programme), ou si personne n'est propriétaire (le dernier programme qui a fait un "copier" dans le presse-papier est terminé), alors le simple fait de copier n'importe quoi dans le presse-papier a automatiquement deux effets: ton programme en devient propriétaire et efface le contenu actuel du presse-papier, puis il copie ses données dedans. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 17:04 | |
| Merci Klaus pour tes explications, bien claires comme toujours. Donc (je l'avais bien lu après coup dans ton post précité), ce n'est pas aussi simple que je pensais, le presse-papier n'est pas du tout une zone mémoire réservée quelque part, et ils se pose des problèmes d'utilisation simultanée par plusieurs programmes différents. Dans ce cas je comprends mieux la nécessité éventuelle d'un 'nettoyage' ponctuel. Encore merci à toi en tout cas. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Videz votre presse papier Sam 25 Nov 2017 - 17:45 | |
| Rendez-vous sur cette pageJ’ai téléchargé et installé cliptray à partir de ce citeC’est in English mais c’est facile à comprendre : suivez les explications donné dans le 1er lien. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Videz votre presse papier | |
| |
|
| |
| Videz votre presse papier | |
|