begin process at 2012 05 27 14:42:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > COMMENT FAIRE DU GRUYÈRE DE VOS FENÊTRES EN API WIN32

COMMENT FAIRE DU GRUYÈRE DE VOS FENÊTRES EN API WIN32


 Information sur la source

Note :
9 / 10 - par 7 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :effet, windows, api, fenêtre Niveau :Débutant Date de création :25/11/2003 Vu / téléchargé :6 181 / 634

Auteur : kptn

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Un petit prog qui mange vos fenêtres petit à petit :)
Ne vous inquiétez pas, ce n'est pas un virus et ça ne détruit en rien vos données. Il fait juste des trous à vos fenêtres, comme du gruyère.

ATTENTION : âmes sensible s'abstenir! Si vous possedez win9x et que vous n'avez aucun accès aux processus, il ne vous restera qu'un moyen pour arrêter ce programme une fois lancé : rebooter!
NOTE que je ne devrais pas à avoir à écrire : ce programme est JUSTE pour montrer ce que l'on peut faire avec les API de windows! Ne vous en servez pas pour faire des plaisanteries autour de vous!
Vous êtes prévenu et je vous considère suffisamment responsable.

Je met le code ici, mais vous le trouverez aussi dans le zip.

Source

  • //**Dev par KPTN**
  • #include <windows.h>
  • #include <stdlib.h>
  • #include <time.h>
  • VOID CALLBACK TimeProc(
  • HWND hwnd, // handle to window
  • UINT uMsg, // WM_TIMER message
  • UINT_PTR idEvent, // timer identifier
  • DWORD dwTime // current system time
  • );
  • int APIENTRY WinMain(HINSTANCE hInstance,
  • HINSTANCE hPrevInstance,
  • LPSTR lpCmdLine,
  • int nCmdShow)
  • {
  • //Génération d'une suite pseudo aléatoire
  • srand( (unsigned)time( NULL ) );
  • //Initialisation du timer et de l'appli
  • SetTimer(NULL, NULL, 10, (TIMERPROC)TimeProc);
  • WNDCLASS lpWndClass;
  • lpWndClass.lpfnWndProc = NULL;
  • lpWndClass.hInstance = hInstance;
  • RegisterClass(&lpWndClass);
  • MSG msg;
  • BOOL bRet;
  • //Récupération des messages
  • while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
  • {
  • if (bRet != -1)
  • {
  • TranslateMessage(&msg);
  • DispatchMessage(&msg);
  • }
  • }
  • return 0;
  • }
  • VOID CALLBACK TimeProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
  • {
  • HWND hWnd2;
  • int w, h;
  • int nTaille, nX, nY;
  • RECT r;
  • //Récupération de la fenêtre avant
  • hWnd2 = GetForegroundWindow();
  • //Récupération de la taille de la fenêtre
  • GetWindowRect(hWnd2, &r);
  • //Détermination de la taille et lieu des trous
  • nTaille = ((double)rand()/RAND_MAX) * (100);
  • nX = ((double)rand()/RAND_MAX) * (r.right-r.left);
  • nY = ((double)rand()/RAND_MAX) * (r.bottom-r.top);
  • //Récupération de la région existante
  • HRGN Region = CreateRectRgn(0,0,0,0);
  • int nRgnType = GetWindowRgn( hWnd2, Region );
  • switch (nRgnType) {
  • case NULLREGION :
  • case ERROR :
  • Region = CreateRectRgn(0, 0, r.right-r.left, r.bottom-r.top);
  • break;
  • case SIMPLEREGION :
  • case COMPLEXREGION :
  • default :
  • break;
  • }
  • //Création du trou
  • HRGN SubRegion = CreateEllipticRgn(nX, nY, nX+nTaille, nY+nTaille);
  • CombineRgn(Region,Region,SubRegion,RGN_DIFF);
  • //Mise à jour de la région de la fenêtre
  • SetWindowRgn(hWnd2,Region,true);
  • //Libération des objets
  • DeleteObject(SubRegion);
  • }
//**Dev par KPTN**

#include <windows.h>
#include <stdlib.h>
#include <time.h>

VOID CALLBACK TimeProc(
  HWND hwnd,         // handle to window
  UINT uMsg,         // WM_TIMER message
  UINT_PTR idEvent,  // timer identifier
  DWORD dwTime       // current system time
);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	//Génération d'une suite pseudo aléatoire
	srand( (unsigned)time( NULL ) );

	//Initialisation du timer et de l'appli
	SetTimer(NULL, NULL, 10, (TIMERPROC)TimeProc);
       	WNDCLASS lpWndClass;
	lpWndClass.lpfnWndProc = NULL;
	lpWndClass.hInstance = hInstance;
	RegisterClass(&lpWndClass);
	MSG msg;
	BOOL bRet;

	//Récupération des messages
	while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
	{
	  if (bRet != -1)
	  {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	  }
	}
	return 0;
}


VOID CALLBACK TimeProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
HWND hWnd2;
int w, h;
int nTaille, nX, nY;
RECT r;
	
	//Récupération de la fenêtre avant
	hWnd2 = GetForegroundWindow();
	//Récupération de la taille de la fenêtre
       GetWindowRect(hWnd2, &r);

	//Détermination de la taille et lieu des trous
       nTaille = ((double)rand()/RAND_MAX) * (100);
       nX = ((double)rand()/RAND_MAX) * (r.right-r.left);
       nY = ((double)rand()/RAND_MAX) * (r.bottom-r.top);

	//Récupération de la région existante
       HRGN Region = CreateRectRgn(0,0,0,0);
       int nRgnType = GetWindowRgn( hWnd2, Region );
       switch (nRgnType) {
           case NULLREGION :
           case ERROR :
              Region = CreateRectRgn(0, 0, r.right-r.left, r.bottom-r.top);
              break;
           case SIMPLEREGION :
           case COMPLEXREGION :
           default :
               break;
       }
	//Création du trou
       HRGN SubRegion = CreateEllipticRgn(nX, nY, nX+nTaille, nY+nTaille);
       CombineRgn(Region,Region,SubRegion,RGN_DIFF);

	//Mise à jour de la région de la fenêtre
       SetWindowRgn(hWnd2,Region,true);

	//Libération des objets
       DeleteObject(SubRegion);

}

 Conclusion

Ce code est sous VC++ 6 mais peut tout aussi bien tourner sous n'importe quel compilateur.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Gruyere
    •   Release
      • gruyere.exeTélécharger ce fichier [Réservé aux membres club]36 864 octets
    • gruyere.dspTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 927 octets
    • gruyere.dswTélécharger ce fichier [Réservé aux membres club]Voir ce fichier537 octets
    • gruyere.ncbTélécharger ce fichier [Réservé aux membres club]35 840 octets
    • gruyere.optTélécharger ce fichier [Réservé aux membres club]53 760 octets
    • gruyere.plgTélécharger ce fichier [Réservé aux membres club]1 679 octets
    • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 874 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture AJOUTER UN SKIN À UNE APPLI - API WIN32
Source avec Zip Source avec une capture MINI EXPLORATEUR : COMMENT NAVIGUER DANS LES RÉPERTOIRES AVE...
Source avec Zip Source avec une capture METTRE DE LA COULEUR DANS LES BOUTONS
Source avec Zip Source avec une capture RENDRE SON APPLICATION SKINNABLE
Source avec Zip P'TIT PROG POUR QUITTER WINDOWS ENTIÈREMENT EN API WIN32

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

GESTION DE LE MÉMOIRE UTILISÉE PAR UN PROCESSUS par lilxam
Source avec Zip MDZ WTK par mdelomez
Source avec Zip HOOK FENETRE par LordBob
Source avec Zip Source avec une capture ENUMÉRER FENÊTRES ET SOUS-FENÊTRES par Pamaury
RÉCUPÉRER, LA VERSION DE WINDOWS par Pamaury

Commentaires et avis

Commentaire de kptn le 25/11/2003 11:04:20

Note de dernière minute pour les possesseurs de win xp uniquement :
si vous utilisez le style XP, ce dernier utilise aussi les regions, donc si vous minimisez la fenêtre et le restaurez, elle redevient comme au débût (sauf si le prog tourne toujours ;)

Commentaire de darksly007 le 06/03/2005 16:01:13

Merci beaucoup pour cette source. D'ailleurs le programme m'a fait bien rire, c'est exactement ce que je cherchais :)
Rassure-toi ce n'est pas pour embêter les gens (car j'ai eu du mal à fermer ce programme, il bouffait même le bureau :D ).
Je t'ai noté 9/10 car le code est clair, pas très long et assez bien commenté.

Commentaire de Arnaud16022 le 20/04/2005 15:06:05

TRO FORT
ouah j'ai galéré our l'arreter,cette saloperie bouffe meme le gestionnaire des taches
merci pour cette source c'est trop fort
je vais avoir du mal a m'abstenir de l'envoyer a une certaine personne...
nan je rigole, si tout le monde fait ca apres on n'aura plus de sources marantes par ici
nota: ou est passée ma barre des taches??? :)

Commentaire de MuPuF le 14/05/2005 12:07:17

pour ceux qui arriverais pas a recuperer leurs bureau, il faut faut virer le processus explorer puis le recreer

Commentaire de Arnaud16022 le 14/05/2005 19:52:33

ouaip C comme ca que j'avais fait, sinon C reboot obligé pour ceux qui connaissent pas le crtaltsuppr ;)

Commentaire de ncoder le 01/12/2005 17:41:40

Wao c'est vrai pour arréter le processus c'est pas facile !!

Merci pour ta source

Commentaire de bloom1 le 20/06/2006 02:13:03

Oh my god !!! C'est dur a fermer le process :P Tres bon code pour faire paniquer quelqu'un...

Commentaire de econs le 20/06/2006 10:40:27 administrateur CS

A peine le temps de flipper ... Et tout a déjà presque disparu. Faut connaître le truc pour avoir le temps de killer tout çà.
Joliment fait en tous cas.

Commentaire de alcior18 le 21/01/2007 13:17:14

Sa ressemble pas mal à ceci:
http://delphi.developpez.com/cours/gui/screenmate/

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Creer un bouton avec l'API Windows [ par banane_rose ] code : ICI C'est sens&#233; faire apparaitre une fen&#234;tre avec un gros bouton "Quitter" au milieu . Mais rien ne marche , m&#234;me pas l'affichag API Windows - Fenêtre sans bordure ? [ par banane_rose ] Bonsoir , Voil&#224; je cherche &#224; faire une fen&#234;tre sans bordure du tout (ou plut&#244;t invisible) mais qui garde la fonction du redimensi API windows, propriété fenêtre. [ par mohdaef ] Bonsoir.Je travaille actuellement sur une fenêtre en API windows, et j'aurais aimé savoir si il existé un propriété, ou autre permettant de naviguer a [API windows] Redimmensionner une fenêtre [ par lucelabrute ] Bonjour, j'aimerais qu'aprés selection dans une combo box, la fenêtre s'agrandisse ou se reduise automatiquement, j'ai lu un peu et j'ai trouvé SetWin Style fenêtre Windows [ par developperweb ] Bonjour, je suis développeur C++, et j'ai un petit problème : j'aimerais créer mon propre thème pour la fenêtre de mon logiciel Win32, mais je ne sais Comment faire un bel interface sous Evcc++ [ par Fabricio19 ] Bonjour à tous, je dois developper un gros programme pour un système embarqué de la marque anders. - UMR-5 - processeur INTEL PXA 270 312MHz - OS WIND aide svp api windows [ par yahyamr ] bonjour je suis un étudiant et je faire en projet en api Windows en appliquant le langage C. mon projet est la gestion de repertoire telephone je snmpwalk API windows [ par Max77240 ] Bonjour à tous, Je travail avec VisualC++ 2008 et le l'API SNMP de Windows. J'aurais voulu savoir s'il est possible de faire l'équivalent d'un "snmpw [API Windows] Combo box et CBN_SELCHANGE [ par lucelabrute ] Bonjour, Je n'arrive pas ç utiliser correctement le message CBN_SELCHANGE. Alors voila ce que je fais: dans le WM_COMMAND: case CBN_SELCHANGE: /* tra


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,902 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales