Coucou et bon dimanche
L'utilisation du presse papier est a éviter en Automatisation/Zennoposter,
mais dans certains cas je l'utilise car :
1 l'emulation de texte prend trop de temps ( si je met en mode fast le texte n'est pas reconnu/la zone de texte n'est pas activé)
2 pour le parasite SEO où je ne peux pas envoyer du code en html/markdown en tant que guest.
Donc pour éviter les conflits en multithread de Presse-Papier j'utilise :
lock(SyncObjects.InputSyncer)
mais cela ne fonctionne que durant l'execution du block de C#
Hors dans certains cas je fais des copier-coller qui ont plusieurs blocs entre eux qui ne sont pas des custom C# ( et que je ne peux/veux pas convertir)
donc pour le moment je passe une solution simple :
un fichier Externe qui "Lock" avec un choix booléen gèrant l'accès au presse papier!
Le but étant que lorsqu'un element est copié ds le presse papier ce ne soit pas un autre thread qui le colle car il y a un décalage de plusieurs secondes entre les blocs et il peut y avoir un entrelacement
J'ai créer le code ci dessous, que pensez vous de la méthode utilisé?
Est ce qu'il y avait plus simple/robuste?
Puis à la fin du processus on écrit "False" ds le fichier Texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 // Lock : True // Construire le chemin du fichier var lockFilePath = Path.Combine(project.Directory, "01 - The Base\\01 - Cookies\\The Lock.txt"); // Vérifier si le presse-papier est disponible if (File.ReadAllText(lockFilePath) == "False") { // Le presse-papier est disponible, écrivons "True" pour le verrouiller File.WriteAllText(lockFilePath, "True"); } else { // Attendre jusqu'à ce que le presse-papier soit disponible while (File.ReadAllText(lockFilePath) != "False") { // Attendre 1 secondes avant de réessayer Thread.Sleep(1000); } // Une fois que le presse-papier est disponible, écrivons "True" pour le verrouiller File.WriteAllText(lockFilePath, "True"); }
Merci par avance pour vos conseils!🙏
Partager