Bonjour, bonsoir !
(Une autre question à la con pour ceux qui ont du temps à perdre...)
Je m'amuse à faire un robot pour cliquer sur la coche du reCAPTCHA (parce que je m'ennuie) et je suis face à un comportement étrange des variables globales (avec IDLE) :
Faites le test chez vous avec ces 2 codes, appuyez sur Entrée pour lancer le mouselogger puis Echap pour arrêter le script puis cliquez au hasard.
Je ne comprends pas pourquoi avec ce premier code la touche Echap ne stoppe le while li mais avec le second code oui ni pourquoi le faite de cliquer arrête bien le while li cette fois-ci.
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 import win32gui, threading, time, random from pynput.keyboard import Key, Listener from pynput.mouse import Listener as Listener2 li = 0 mo = 0 coords = [] pressed_coords = [] def mouse_listener(): print('START OF MOUSE LISTENER') with Listener2(on_click=on_click) as listener2: listener2.join() while li: t = random.random() time.sleep(t) x,y = win32gui.GetCursorPos() coords.append([x,y,t]) print('END OF MOUSE LISTENER') def on_click(x, y, button, pressed): global li print('{0} at {1}'.format('Pressed' if pressed else 'Released',(x, y))) pressed_coords.append([x,y]) li = 0 # Stop listener return False def on_release(key): global li, mo print('{0} release'.format(key)) if key == Key.esc and li: li=0 # Stop listener return False elif key == Key.enter and not li: li=1 threading.Thread(target=mouse_listener).start() # Collect events until released with Listener(on_release=on_release) as listener: listener.join()Sûrement un truc de débutant que j'ai pas compris...
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 import win32gui, threading, time, random from pynput.keyboard import Key, Listener from pynput.mouse import Listener as Listener2 li = 0 mo = 0 coords = [] pressed_coords = [] #-----------------1ERE PARTIE QUI CHANGE------------------------- def mouse_listener2(): with Listener2(on_click=on_click) as listener2: listener2.join() #---------------------------------------------------------------- def mouse_listener(): print('START OF MOUSE LISTENER') #-----------------2nde PARTIE QUI CHANGE------------------------- threading.Thread(target=mouse_listener2).start() #---------------------------------------------------------------- while li: t = random.random() time.sleep(t) x,y = win32gui.GetCursorPos() coords.append([x,y,t]) print('END OF MOUSE LISTENER') def on_click(x, y, button, pressed): global li print('{0} at {1}'.format('Pressed' if pressed else 'Released',(x, y))) pressed_coords.append([x,y]) li = 0 # Stop listener return False def on_release(key): global li, mo print('{0} release'.format(key)) if key == Key.esc and li: li=0 # Stop listener return False elif key == Key.enter and not li: li=1 threading.Thread(target=mouse_listener).start() # Collect events until released with Listener(on_release=on_release) as listener: listener.join()
PS : Je viens de faire un test sur la démo de reCAPTCHA, il m'a proposé de trouver les images quand j'ai repris la main mais pas avant![]()
Partager