Rechercher : dans
Par :

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

Dernière réponse le 14 mar 2009 à 11:48:16 Gérard, le 11 mar 2009 à 23:46:06 
 Signaler ce message aux modérateurs

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 !

Configuration: Windows Vista
Opera 9.63

Meilleures réponses pour « Empêcher la fermeture de la fenêtre en C/C++? » dans :
Empêcher la fermeture de la fenêtre ipconfig ou ping VoirLorsque vous lancez une commande par Démarrer/Exécuter, une console s'ouvre et se referme aussitôt, sans que vous ayiez le temps de noter ce qui s'affiche à l'écran. Solution Pour remédier à ce problème, il existe plusieurs alternatives : Pour...
Télécharger VirtualBox VoirVirtualBox permet d'émuler complètement un PC. C'est comme si vous aviez un second PC dans une simple fenêtre. C'est utile pour tester d'autres système d'exploitation sans repartitionner et sans risque (repartitionner par exemple Linux), pour...
Le fenêtrage de Microsoft Windows VoirLe vocabulaire relatif au fenêtrage Windows tient son nom (Windows = fenêtre en anglais) du fait qu'il constitue une interface graphique à multi-fenêtrage, c'est-à-dire que l'on peut ouvrir simultanément plusieurs fenêtres sous Windows. Pour les...

1

loupius, le 12 mar 2009 à 01:42:23

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.

Répondre à loupius

2

Gérard, le 12 mar 2009 à 08:07:10

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 !

Répondre à Gérard

3

Char Snipeur, le 12 mar 2009 à 09:08:52

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. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

4

fiddy, le 12 mar 2009 à 12:08:21

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
Google is your friend

Répondre à fiddy

5

Char Snipeur, le 12 mar 2009 à 12:14:39

à 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 ? Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

6

fiddy, le 12 mar 2009 à 13:05:19

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.
Google is your friend

Répondre à fiddy

7

Gérard, le 12 mar 2009 à 13:10:16

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 !

Répondre à Gérard

8

Gérard, le 12 mar 2009 à 13:12:14

L'empêcher totalement de le fermer (même par le gestionnaire) serait le meilleur...

Répondre à Gérard

9

fiddy, le 12 mar 2009 à 17:07:33
  • +2

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 : http://www.generation-nt.com/...

Cdlt
Google is your friend

Répondre à fiddy

10

Gérard, le 12 mar 2009 à 17:36:27

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 !

Répondre à Gérard

11

fiddy, le 12 mar 2009 à 17:58:22
  • +1

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
Google is your friend

Répondre à fiddy

12

Gérard, le 12 mar 2009 à 18:04:19

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

++

Répondre à Gérard

13

Gérard, le 12 mar 2009 à 18:07:03

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 !

Répondre à Gérard

14

fiddy, le 12 mar 2009 à 18:24:09

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.
Google is your friend

Répondre à fiddy

15

derrick, le 12 mar 2009 à 19:19:19

Voir chez les pros Win32 api (news://nntp.aioe.org/fr.comp.os.ms-windows.programmation)
Ca a été expliqué maintes fois..

Répondre à derrick

16

Gérard, le 12 mar 2009 à 20:12:22

OK merci pour votre aide !

Merci !

Répondre à Gérard

17

Gérard, le 12 mar 2009 à 20:14:58

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 !

Répondre à Gérard

18

fiddy, le 12 mar 2009 à 20:47:37

Sur internet, tu devrais trouver ton bonheur. Voici un début de piste : http://www.geocities.com/SiliconValley/2072/prgw32rg.htm
Google is your friend

Répondre à fiddy

19

Gérard, le 12 mar 2009 à 21:19:55

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 !!

Répondre à Gérard

20

Char Snipeur, le 13 mar 2009 à 08:23:35

à 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. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

21

 Gérard, le 14 mar 2009 à 11:48:16

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 !

Répondre à Gérard