INTERDIRE ALT+F4 [Résolu]

stevenleferran 32 Messages postés vendredi 14 août 2009Date d'inscription 15 août 2009 Dernière intervention - 22 mai 2006 à 15:25 - Dernière réponse : f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention
- 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
Afficher la suite 

9 réponses

Répondre au sujet
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 22 mai 2006 à 17:10
+3
Utile
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;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ThWilliam
Utilisateur anonyme - 22 mai 2006 à 18:10
+3
Utile
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é.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 22 mai 2006 à 19:52
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de f0xi
Utilisateur anonyme - 22 mai 2006 à 20:04
+3
Utile
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).
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 22 mai 2006 à 20:07
+3
Utile
Si quelqu'un a utiliser ce code qu'il prévienne immédiatement les administrateurs
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
roud59 103 Messages postés jeudi 16 septembre 2004Date d'inscription 26 juillet 2007 Dernière intervention - 23 mai 2006 à 09:41
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de roud59
Utilisateur anonyme - 23 mai 2006 à 11:05
+3
Utile
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).

@+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
roud59 103 Messages postés jeudi 16 septembre 2004Date d'inscription 26 juillet 2007 Dernière intervention - 22 mai 2006 à 15:40
0
Utile
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
Commenter la réponse de roud59
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 mai 2006 à 17:14
0
Utile
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.
Commenter la réponse de f0xi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.