Première étape : le code dans l'évènement OnClick du bouton :
procedure TForm1.Button1Click(Sender: TObject);
begin
//Bazscule l'état actif/inactif du timer
Timer1.Enabled := not Timer1.Enabled;
//changer l'intitulé du bouton
if Timer1.Enabled then
Button1.Caption := 'Timer Activé'
else
Button1.Caption := 'Timer désactivé';
end;
Deuxième étape : vien ensuite le code à exécuter quand le timer est actif :
procedure TForm1.Timer1Timer(Sender: TObject);
var
WinDir: array[0..Max_Path] of char;
begin
//Recher le chemin de Windows
GetWindowsDirectory(@Windir, Max_Path);
//Repeindre la fiche pour effacer le texte inscrit
// précédemment sur la canvas de la fiche
Repaint;
//démarrer l'action et tester la valeur de
//retour de ShellExecute
if ShellExecute(0, nil, PChar(Windir+'\system32\cmd.exe'), PChar('/c net send /users '+Message_Edit.text), nil, SW_HIDE) > 32 then
Canvas.Textout(10, 10 , 'Le Message à Bien été envoyé aux personnes accédant a vos dossiers partagés')
else
Canvas.TextOut(10, 10, 'Echec à l''envoi du message');
end;
En regardant le code que tu m'as communiqué, j'ai deux remarques à faire :
1- Utiliser le registre pour connaitre le chemin de windows n'est pas une bonne idée. Sur mon système, je n'avais aucune entrée portant ce nom à l'endroit recherché. J'ai donc remplacé par un appel à GetWindowsDirectory qui renverra toujours la valeur correcte, quelle que soit la version de Windows.
2- Un appel à la fonction ShowMessage est formellement déconseillé dans un évènement qui s'exécute aussi fréquemment (1 seconde) car le programme est bloqué tant que l'utilisateur n'a pas appuyé sur le bouton ok. Il finira par se lasser très vite. %-6
Bonne chance pour la suite.