Bonjour,
Je reviens à nouveau vers vous pour un problème de violation d'accès,
c'est très pénible car ce n'est pas un problème de programmation à proprement parler mais plutôt d'implémentation du code, je suis toujours bloqué par des choses basiques par exemple les implémentations de procédures, déclaration de variables, où les placer dans le code etc.... je suis autodidacte et malgré les docs disponibles, je bataille....
donc là , j'ai un code qui me renvoi la liste des processus lancés dans un memo,
rien de bien compliqué, cela fonctionne très bien quand j'inclue le code dans la procédure FormCreate,
une fois placé dans une procédure, et appel dans le FormCreate , j'obtiens le message d'erreur violation d'accès,
Code sans la procédure qui fonctionne :
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,TLHelp32, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; MyHandle: THandle; Struct: TProcessEntry32; implementation {$R *.dfm} procedure sniff(); var Memo1: TMemo; begin try MyHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); Struct.dwSize:=Sizeof(TProcessEntry32); if Process32First(MyHandle, Struct) then memo1.lines.Add(Struct.szExeFile); while Process32Next(MyHandle, Struct) do memo1.lines.Add(Struct.szExeFile); except on exception do ShowMessage('Erreur'); end; end; procedure TForm1.FormCreate(Sender: TObject); begin sniff(); end; end.
De plus , pourquoi faut-il que j'ajoute var Memo1: TMemo; alors qu'il est dans mes Type ???
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 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,TLHelp32, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; MyHandle: THandle; Struct: TProcessEntry32; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin try MyHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); Struct.dwSize:=Sizeof(TProcessEntry32); if Process32First(MyHandle, Struct) then memo1.lines.Add(Struct.szExeFile); while Process32Next(MyHandle, Struct) do memo1.lines.Add(Struct.szExeFile); except on exception do ShowMessage('Erreur'); end; end; end.
Merci à vous d'avance, et ....si vous avez des docs à me conseiller pour apprendre correctement, je suis preneur !
Partager