Empêcher la fermeture de la fenêtre en C/C++?

Résolu/Fermé
Gérard - 11 mars 2009 à 23:46
 Sangoroux - 24 août 2015 à 10:35
Bonjour, je voulais savoir si c'était possible d'empêcher la fermeture de l'invite de commande DOS dans laquelle s'affiche mon programme (en C ou C++ par le biais d'une fonction par exemple ?), c'est à dire que quand le programme sera lancé, l'utilisateur ne pourra plus fermer le programme, l'interrompre ou alors si on ne peut pas je voudrait savoir si il y a un moyen de cacher la fenêtre toujours pour la même raison : que l'utilisateur ne puisse pas interrompre le programme, je suis débutant alors soyez précis SVP !

Merci !

15 réponses

OK mais ce serait pas possible que tu me fasse une explication complète ?
Du genre la fonction pour cacher la fenêtre est :
ShowWindow("false");

Je dis n'importe quoi bien sur :)
Explique moi entièrement stp !

Merci !
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 mars 2009 à 17:58
Avec ShowWindow, tu dois fournir le Handle de ta fenêtre. Tu le récupères facilement en créant une application Win.
Sinon tout simplement :
#include <windows.h>

int main(void) {
   FreeConsole();
   //etc...
   return 0;
}

Cdlt
0
OK merci pour votre aide !

Merci !
1
Mais vous pourriez me donner un code d'exemple pour créer une clé dans le registre et pouvoir vérifier a l'aide d'une boucle si elle existe ?

Merci !
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 mars 2009 à 20:47
Sur internet, tu devrais trouver ton bonheur. Voici un début de piste : http://www.geocities.com/SiliconValley/2072/prgw32rg.htm
0
Le problème c'est que moi et l'anglais ca fait deux j'ai 15 ans je débute je vais vous donner la description du code exact que j'aimerai avoir et si vous pourriez me le faire ca devrait aller ca doit pas être bien compliqué pour vous :
C'est simple je veux qu'au tout début du code il y ait une boucle (if par exemple) qui vérifie si une clé registre (nommée VerifKey par exemple) existe donc normalement au premier lancement du programme la clé n'est pas trouvée, le programme continue donc... Et là on crée une clé registre nommée VerifKey dans un répertoire quelquonque ainsi au deuxième et autres lancements du programme le programme s'arrêtera automatiquement au début lors de la boucle IF.
Si vous pouvez appliquer ces attributs a la clef : une valeur DWORD nommée DisableTaskMgr avec une entrée de valeur 1.

Voila merci j'aimerai qu'on me fasse ce code entierement parce que j'y connais pratiquement rien et que j'ai cherché et ca a l'air dur j'ai jsute besoin de ce bout de code très exactement j'espère que vous y arriverez et que vous avez compris le code que je veux avoir !

Merci !!
1

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

Posez votre question
J'ai réussi en fait je bloquais parce que ce put*** de compilateur Visual Studio C++ me mettais des erreurs inexplicables je savais pas pourquoi je suis donc passé sous code::blocks et maitenant ca marche !

Merci !
1
Bonjour,

Au cas ou si cela n'a pas été mis à jour !
Insérez cette ligne while (!getc(stdin)){};
avant le return 0.
Du moins pour visual studio 2013
1
Tu n'as pas de chance, notre spécialiste fiddy n'est pas de service.
Je ne suis pas un spécialiste, enfin disons que pour moi la programmation console est un lointain souvenir, mais pour avoir bien souvent vu cette question sur ce forum, je pense que fiddy t'aurait dit qu'il te fallait simplement ajouter un 'getchar' pour qu'il y ait attente de la fermeture de la fenêtre.
Bonne chance et bienvenue dans le monde merveilleux de la programmation.
0
Je crois que tu n'as pas bien compris ma question je veux pas emp^cher le programme de s'arrêter mais empêcher l'utilisateur du programme de le fermer parceque empêcher la fermeture du programme un simple
system("PAUSE");
suffit donc voila ou alors je demandais comment cacher la fenêtre ?

Merci !
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 mars 2009 à 09:08
Salut.
Il doit y avoir une solution microsoftienne, pour tué la fenêtre sans tué le programme.
La solution que j'utilise, c'est de compiler avec l'option -mwindows avec gcc, comme ça le programme est considérer comme une application fenêtre sans faire de fenêtre, du coup il n'apparaît que dans le gestionnaire des tâches.
Par contre, impossible d'avoir des échanges avec lui par les entrées sorties standards.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 mars 2009 à 12:08
Salut,
Quels genres de programmes souhaites-tu faire ? L'utilisateur peut interagir avec le programme ?
Tu souhaites juste cacher l'exécution du programme à l'utilisateur (cacher la fenêtre et ne pas le faire apparaître dans le gestionnaire des processus) ou l'empêcher totalement de le fermer (même par le gestionnaire)?
Cdlt
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
12 mars 2009 à 12:14
à mon avis, il veux l'empêcher l'utilisateur de le fermer complètement. Une alternative est de le masquer (comment fermer un truc qu'on ne voit pas).
Par contre, il est possible de faire ce que tu dit ? masquer le processus au gestionnaire de processus ?
On peut aussi faire un programme qui ne peut être tuer ? (c'est chiant si il faut redémarrer win à chaque fois qu'on veux le fermer) Ou alors en utilisant les droits utilisateurs ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023
12 mars 2009 à 13:05
Par contre, il est possible de faire ce que tu dit ? masquer le processus au gestionnaire de processus ?
Oui, c'est possible. Il y a plusieurs techniques (injection de processus, modification de la table SSDT, de l'EPROCESS, etc.).

On peut aussi faire un programme qui ne peut être tuer ?
Oui, on peut. En jouant avec les droits utilisateurs, cela doit être possible.
0
En gros le meilleur ce serait que l'utilisateur puisse voir le programme mais qu'il ne puisse pas le fermer ou l'arrêter (gestionnaire de tache aussi si c'est possible) mais apparement certains disent que c'est possible je voudrait qu'on m'explique SVP :)

Merci !
0
L'empêcher totalement de le fermer (même par le gestionnaire) serait le meilleur...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 mars 2009 à 17:07
Ok. Dans ce cas, ce que tu peux faire, c'est de cacher la console (fonction ShowWindow de windows.h) ou tout simplement de ne pas la créer.
Et tu empêches l'utilisateur d'accéder aux gestionnaires des processus. Pour cela, tu dois modifier une valeur dans la base de registre : https://www.generation-nt.com/desactiver-l-acc-s-au-gestionnaire-des-taches-de-windows-astuce-24639-1.html

Cdlt
0
Merci ! C'est bon c'est OK ca marche !

++
0
Je voulais aussi savoir comment faire pour que quand l'utilisateur ouvre le programme une fois, le ferme, imaginons qu'il éteint son ordi et que quand il le rallume et qu'il ouvre le programme une autre chose se passe dans le programme ? Vous me comprenez ?

Merci !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 mars 2009 à 18:24
T'écris une valeur dans la base de registre. Si la valeur existe, c'est que ce n'est pas la première fois que le programme se lance.
0
Voir chez les pros Win32 api (news://nntp.aioe.org/fr.comp.os.ms-windows.programmation)
Ca a été expliqué maintes fois..
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
13 mars 2009 à 08:23
à 15 ans, il y a des gars qui ont cracker la sécurité du pentagone américain.
Alors, tu peux réussir à lire une pauvre page en anglais (à ton age, tu doit déjà avoir quelques années de cour d'anglais) et faire ce petit programme. Au moins essai, met l'essentiel dedans, et si tu bloques, soumet nous le code source, on t'aidera à comprendre ce qui ne va pas.
0