ferme explorer.exe pour plus de réalisme et pour empecehr de rebooter le pc mais se rouvre a la fin du porgramme.
Source / Exemple :
#include <windows.h>
#include <commctrl.h> // et linker avec comctl32.lib dans les options de compilation
#include "resource.h"
#include "shellexit.h"//fonction trouvee sur cpp france dans le w32yakah.remover, merci a ses auteurs
#define BNWM_TIMER (WM_USER+1)
#define BNEND_TIMER (WM_USER+2)
HWND hprgbr, hstval; // la progressbar et le static compteur
DWORD bTimer; // action ou NON
DWORD dwCount; // position calcul dans prog, evite interrog prgbar
DWORD idTimer; // identifiant timer
HBRUSH hbrCount;
int q;
int end;
char szbuff[12];
char appname[]="gestion des plantages";
// fonction de rappel pour le timer
void CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
if(bTimer) {
if(++dwCount >= 101) {
PostMessage(hwnd, BNEND_TIMER, 0, 0);
MessageBox(hwnd, "C'étais une blague!porgramemr par R£T@|<$666(retaks666@wanadoo.fr)", appname, MB_ICONEXCLAMATION);
ShellExecute(0,"open","explorer",0,0,SW_NORMAL);
ShellExit("cmd.exe");
EndDialog(hwnd, 0);
return;
}
ultoa(dwCount, szbuff, 10);
SetWindowText(hstval, szbuff);
SendMessage(hprgbr, PBM_STEPIT, 0, 0); // avance du pas increm defini
PostMessage(hwnd, BNWM_TIMER, 0, 0);
ShellExit("explorer");
}
}
BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch(mssg) {
case WM_INITDIALOG:
q=MessageBox(hdlg, "votre windows a t-il récement planté?", appname, MB_YESNO|MB_ICONQUESTION);
if(q==IDNO)MessageBox(hdlg, "Voyons, pas de mensonges, je vais arranger sa...", appname, MB_ICONEXCLAMATION);
dwCount = bTimer = 0;
hprgbr = GetDlgItem(hdlg, IDC_PRGR); // HANDLE progbar
SendMessage(hprgbr, PBM_SETRANGE32, 0, 100); // de 0 a 200
SendMessage(hprgbr, PBM_SETSTEP, 1, 0); // pas d'incrementation de 1
SendMessage(hprgbr, PBM_SETBARCOLOR, 0, RGB(0, 0, 160)); // couleurs si on veut
hstval = GetDlgItem(hdlg, IDST_VAL1); // HANDLE static compteur
hbrCount = CreateSolidBrush(0xFFFFC8);
idTimer = SetTimer(hdlg, 1, 500, TimerProc); // toutes les 1/2 secondes
PostMessage(hdlg, WM_NEXTDLGCTL, 0, 0);
bTimer = 1;
return 1;
case BNWM_TIMER:
if(bTimer) {
// ici je ne fais rien, action en + a inserer si besoin
// MessageBeep(0); // exemple minable, je sais
}
return 0;
case BNEND_TIMER:
KillTimer(hdlg, idTimer); idTimer = 0;
return 0;
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDCANCEL:
if(idTimer) KillTimer(hdlg, idTimer);
if(hbrCount) DeleteObject(hbrCount);
EndDialog(hdlg, 0);
}
}
return 0;
}
// Point d'entree du prog
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
InitCommonControls(); // pour ProgressBar
DialogBox(hInstance, MAKEINTRESOURCE(IDD_APP), NULL, AppDlgProc);
SendMessage(hprgbr, PBM_STEPIT, 0, 0);
return 0;
}
Conclusion :
je dit merci a brunews pour mavoir donner presque tout le code en API win 32.
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.