Salut tout le monde,
J'aimerais bien savoir comment protéger un GUI sous MATLAB par un mot de passe.
C'est comme mettre une clé de licence.
Salut tout le monde,
J'aimerais bien savoir comment protéger un GUI sous MATLAB par un mot de passe.
C'est comme mettre une clé de licence.
Bonjour,
Petite recherche avec le mot clé "password":
Une autre alternative en utilisant (encore une fois) Uicomponent :
Le mot de passe est identique au nom d'utilisateur ici dans cet exemple.
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
55
56
57
58
59
60
61
62 function test figure('units','pixel','position',[100 100 300 200],... 'menubar','none','toolbar','none',... 'name','Login','numbertitle','off') movegui('center') up = uipanel(... 'units','normalized',... 'position',[.1 .1 .8 .8],... 'fontname','arial',... 'fontsize',12); y = .2; iy = (1-2*y)/3; uicontrol(up,'style','text','units','normalized',... 'position',[.05 y+2*iy-0.03 .3 y],'string','User: ',... 'fontname','arial','fontunits','points','fontsize',12,'hor','left') uicontrol(up,'style','text','units','normalized',... 'position',[.05 iy-0.03 .3 y],'string','Password: ',... 'fontname','arial','fontunits','points','fontsize',12,'hor','left') pop = uicontrol(up,'style','popup','units','normalized',... 'position',[.4 y+2*iy .55 y],'string',{'aaaa' 'bbbbb' 'ccccc'},... 'fontname','arial','fontunits','points','fontsize',12,'hor','left', ... 'tag','popusers'); pass = uicomponent(up,'style','JPasswordField', ... 'tag','pass',... 'units','normalized'); set(pass,'position',[.4 iy .55 y],'KeyPressedCallback',@kpcb); function kpcb(obj,event) if event.getKeyCode==10 checkpass elseif event.getKeyCode==27 pass.Text = ''; end end function checkpass str = get(pop,'string'); str = cellstr(str); v = get(pop,'value'); if strcmp(pass.Text,str{v}) % Mot de passe correct close else % Mot de passe incorrect pass.Text = ''; beep end end end
Il suffit d'appuyer sur la touche Entrée pour vérifier le mot de passe saisi.
C'est portable et compilable sans soucis avec le MATLAB Compiler.
Ton programme est génial mais comment peut on récupérer le nom de l'utilisateur qui se connecte car si on renvoie la variable v à travers les fonctions : 'checkpass' puis 'kpcb' Matlab nous informe que cette variable à plusieurs sessions... et impossible de récupérer cette variable dans le set qui gère le callback ...
Bonjour,
Il te suffit d'utiliser le principe des fonctions imbriquées:
Utilisation:
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
55
56
57
58
59
60
61
62
63
64
65
66 function user = test figure('units','pixel','position',[100 100 300 200],... 'menubar','none','toolbar','none',... 'name','Login','numbertitle','off') movegui('center') up = uipanel(... 'units','normalized',... 'position',[.1 .1 .8 .8],... 'fontname','arial',... 'fontsize',12); y = .2; iy = (1-2*y)/3; uicontrol(up,'style','text','units','normalized',... 'position',[.05 y+2*iy-0.03 .3 y],'string','User: ',... 'fontname','arial','fontunits','points','fontsize',12,'hor','left') uicontrol(up,'style','text','units','normalized',... 'position',[.05 iy-0.03 .3 y],'string','Password: ',... 'fontname','arial','fontunits','points','fontsize',12,'hor','left') pop = uicontrol(up,'style','popup','units','normalized',... 'position',[.4 y+2*iy .55 y],'string',{'aaaa' 'bbbbb' 'ccccc'},... 'fontname','arial','fontunits','points','fontsize',12,'hor','left', ... 'tag','popusers'); pass = uicomponent(up,'style','JPasswordField', ... 'tag','pass',... 'units','normalized'); set(pass,'position',[.4 iy .55 y],'KeyPressedCallback',@kpcb); user = []; uiwait function kpcb(obj,event) if event.getKeyCode==10 checkpass elseif event.getKeyCode==27 pass.Text = ''; end end function checkpass str = get(pop,'string'); str = cellstr(str); v = get(pop,'value'); if strcmp(pass.Text,str{v}) % Mot de passe correct user = str{v}; close else % Mot de passe incorrect pass.Text = ''; beep end end end
Code : Sélectionner tout - Visualiser dans une fenêtre à part utilisateur = test
Ha merci, je connaissais pas cette fonction ...
Disons aussi que je n'ai jamais utilisé les fonctions imbriquées![]()
Partager