Accueil > > > 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
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.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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é faire apparaitre une fenêtre avec un gros bouton "Quitter" au milieu . Mais rien ne marche , même pas l'affichag
API Windows - Fenêtre sans bordure ? [ par banane_rose ]
Bonsoir , Voilà je cherche à faire une fenêtre sans bordure du tout (ou plutô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
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|