INTERDIRE ALT+F4

Résolu
stevenleferran Messages postés 32 Date d'inscription vendredi 14 août 2009 Statut Membre Dernière intervention 15 août 2009 - 22 mai 2006 à 15:25
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 23 mai 2006 à 17:14
Bonjour,

Je souhaiterai interdire les raccourcis Alt+F4 dans un programme Delphi, plus précisément sur une form.
Pourriez-vous m'aider?
En vous remerciant.

Steven LE FERRAN - CLFrance

9 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
22 mai 2006 à 17:10
Salut Steven,

si ce que tu veux, c'est obliger de passer par un bouton (ou un élément de menu) pour pouvoir fermer la form, il y a un moyen très simple avec une variable boolean :

CanQuit: boolean;

Tu l'initialise à false dans l'événement OnCreate de la fiche.

procedure TForm1.ButtonQuitClick(Sender: TObject);
begin
    if ....  // contrôle éventuel
    then
    begin
        CanQuit:= true;
        Close;
    end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
   CanClose:= CanQuit;
end;
3
Utilisateur anonyme
22 mai 2006 à 18:10
Salut,


je n'ai rien compris à ce que tu souhaites faire. Cependant je tire le signale d'alarme sur la méthdoe proposée par [auteurdetail.aspx?ID=341917 roud59]
: en faisant ca tu vas tout simplement jouer dans la  base de
registre. Tu vas donc bloquer sur toutes applications les touches.
Cette méthode est d'autant plus dangereuse si d'autres personnes
récupèrent ton soft : ils risquent de ne pas savoir la solution.


A ne pas utiliser par quelqu' un de peu experimenté.
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
22 mai 2006 à 19:52
surtout que notre ami Roud ne semble pas savoir ou doit etre mise la valeur DisableTaskMgr et qu'il ne semble pas maitriser l'objet TRegistry en effectuant des manipulation dangereuse dessus.

et point important, si jamais le programme s'arrete de maniere inattendue ou qu'il y a une coupure de courrant, le gestionnaire des taches serat definitivement bloqué ... ce qui n'est pas trés cool au final.

trés trés mauvaise solution ... sans parler des IDS et anti-virus qui vont degager le programme quand ils en veront le comportement de ce dernier.

si tu a un main menu tu peu mettre un shortcut ALT+F4 qui bloqueras alors l'action de ce dernier.
3
Utilisateur anonyme
22 mai 2006 à 20:04
J'irais meme plus loin fOxi : cela pue le virus à plein nez (blocage de
la barre, des icones, du bouton démarrer, puis CONTR+ALT+DEL). Voila un
mec qui est bien : on pourrait presque appeler cela une tentative de
d'infection (et oui donner comme code un virus).
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
22 mai 2006 à 20:07
Si quelqu'un a utiliser ce code qu'il prévienne immédiatement les administrateurs
3
roud59 Messages postés 99 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 26 juillet 2007 2
23 mai 2006 à 09:41
Bonjour vous tous

Si suis désolé mais j'ai fait un énorme hors sujet. J'avais compris ALT-TAB au lieu de CTRL-TAB.

Concernant ma procédure, je sais qu'elle est très dangereuse, mais j'ai déja dû l'utiliser et ce n'était pas pour un faire virus (j'ai déjà perdu des données importantes à cause d'un virus et je suis totalement contre ce genre le logiciel) J'avais fait tourner une application sur un PC et il fallait pas que l'utilisateur puisse arrêter le programe ou utiliser la machine pour d'autres choses (jeu ou surf internet par exemple,) sinon des demandes de secours ne pouvaient plus être traitées. J'ai donc vérouillé le PC ainsi. Le problème est quand le programme plante, on a plus la main sur la machine et il faut refaire un peu de DOS pour empêcher le lancement de l'appli au boot et récupérer la main.

Je ne cherche pas à me défendre de mon erreur mais j'insiste sur le fait que je n'ai pas voulu faire de mal à quelqu'un, et surtout pas aux utilisateurs de CS qui m'ont beaucoup aidé dans mes développements.

 Veuillez donc tous m'excuser de ma réponse inadaptée et dangereuse si elle est mal utilisée. Je suis réellement confus et réfléchirait beaucoup plus la prochaine fois.

Roud59
3
Utilisateur anonyme
23 mai 2006 à 11:05
Roud59 plutot que d'utiliser un bazooka pour tuer une mouche tu devrais (dans ton application) bloquer la souris et le clavier : ca serait déjà beaucoup moins dangereux.

En espérant que personne n'ai essayé ta procedure (qui en plus contient énormément de boulettes).

@+
3
roud59 Messages postés 99 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 26 juillet 2007 2
22 mai 2006 à 15:40
Salut Steven

Je t'envoie une procédure qui fonctionne bien dans mon cas. Elle est basée sur la supression de explorer.exe et qui empeche pas mal de choses dans windows.
Ca fonctionne bien avec XP et 2000. Les autres ... je ne sais pas!

var
  WindowsVerouille : boolean

procedure VerouillerWindows(Verrou : boolean);
var
  reg: TRegistry;
begin
  if Verrou = WindowsVerouille then exit;
  WindowsVerouille := Verrou;
  // Supprimer la barre de tache, les icones et la touche Windows
  if Verrou then
    KillTask('explorer.exe', 1)
  else
    WinExec('explorer.exe', SW_SHOWDEFAULT);
  // Verouille CTRL+ALT+DEL
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CURRENT_USER;
    reg.OpenKey('Software', True);
    reg.OpenKey('Microsoft', True);
    reg.OpenKey('Windows', True);
    reg.OpenKey('CurrentVersion', True);
    reg.OpenKey('Policies', True);
    reg.OpenKey('System', True);
    if Verrou then
      reg.WriteString('DisableTaskMgr', '1')
    else
      reg.DeleteValue('DisableTaskMgr');
    reg.CloseKey;
  finally
    reg.Free;
  end;
end;

Bonne réception

Roud59
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
23 mai 2006 à 17:14
en fait, avant de poser un code source il faut ce poser ces deux question :

mon code est il adapté a la question ?
le niveau de ce code est il du meme niveau que la personne qui pose la question ?

assurement ton petit bout de code, n'est pas et vraiment pas a mettre entre toute les mains je dirais meme qu'il serait reservé a un developpeur avertis qui sais exactement qu'elle effet le code produit sur le systeme et surtout comme inverser le processus en cas de probleme ...
donc non seulement trés bonne notion de prog mais aussi bonne notion des mecanismes de windows et notement du registre de windows.
0
Rejoignez-nous