Urgt::ctrl alt suppr

kidpigeyre Messages postés 96 Date d'inscription mardi 3 juillet 2001 Statut Membre Dernière intervention 2 novembre 2006 - 19 févr. 2004 à 12:06
dmp32 Messages postés 7 Date d'inscription jeudi 13 avril 2006 Statut Membre Dernière intervention 20 avril 2006 - 19 avril 2006 à 16:51
qd mon prgm est fermé par ctrl alt suppr il ne peux pas finir d'éxecuter le code qu'il doit faire lors d'une fermeture classique.

comment faire??

mci
kidpigeyre

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 févr. 2004 à 12:11
Empecher le CTRl ALT SUPPR.
Fais un hook sur la creation de fenetre et tu sais a quel process appartient la fenetre, tu la tues illico si est progman. C'est le plus simple.
Sinon driver upper filter sur KBDCLASS, c'est du kernel mode.
ciao...
BruNews, Admin CS, MVP Visual C++
0
kidpigeyre Messages postés 96 Date d'inscription mardi 3 juillet 2001 Statut Membre Dernière intervention 2 novembre 2006
19 févr. 2004 à 12:44
J'aimerais que ça fasse pareil lors de la fermeture de mon processus par windows (par ex lors d'un arret de windows, qu'il ferme tous les processus)
kidpigeyre
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 févr. 2004 à 13:11
pas tout compris.
Si Windows ferme c'est que USER l'a voulu et en ce cas il peut forcer le demappage de ton processus, plus aucune action possible puisque processus disparait.
En cas de fermeture, tu reçois WM_QUERYENDSESSION puis WM_ENDSESSION.
ciao...
BruNews, Admin CS, MVP Visual C++
0
kidpigeyre Messages postés 96 Date d'inscription mardi 3 juillet 2001 Statut Membre Dernière intervention 2 novembre 2006
19 févr. 2004 à 13:45
ça marche pas jv tenter de détailler un peu

je charge une dll o démarage d emon programme (par ailleurs, il se lance au démarrage) et j'aimerai qu'il la décharge juste au moment ou le programme se ferme, mais cette fermeture n'est pas envoyé par l'utilisateur mais par le système voila donc ce que j'avais mis :

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
SKH skh;
USKH uskh;

HMODULE hDLL;

// -- Enlevez les commentaires d'un des trois char ci-dessous pour choisir la DLL à charger.

char DLLname[256] = "kbdHooKDLL.dll";

char toaff[1024];

// GosRegisterProcess(0,1);

// Définir les DLL loadées ici

if(!(hDLL = LoadLibrary(DLLname)))
{
wsprintf(toaff,"Impossible de charger %s",DLLname);
MessageBox(NULL,toaff,"ERREUR",MB_OK);
return 0;
}

// PLACER ICI LES FONCTIONS EXPORTéES A UTILISER
//CLAVIER

skh = (SKH) GetProcAddress(hDLL,"SetkbdHook");
if( !skh ) MessageBox(NULL,"Impossible de charger la fonction exportee SetkbdHook()","ERREUR",MB_OK);
else
{
bool res = skh();
if( ! res ) MessageBox(NULL,"Impossible de définir les Hooks clavier....","ERREUR",MB_OK);
}

// FIN DES FONCTIONS EXPORTéES...
MSG msg;

while(1) // Do our infinite loop
{ // Check if there was a message
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{ if(msg.message WM_DESTROY || msg.message WM_QUIT || msg.message == WM_QUERYENDSESSION ) // If the message wasnt to quit
{ //break;
// AUTRES FONCTIONS EXPORTéES
uskh = (USKH) GetProcAddress(hDLL,"UnSetkbdHook");
if (uskh) uskh();
FreeLibrary(hDLL);
FILE *log;
log = fopen("essai.txt","a+");
fprintf(log,"fin\n");
fclose(log);
}
}
}
//MessageBox(NULL,"Appuyez sur OK pour terminer le processus","INFO",MB_OK | MB_ICONINFORMATION);

return 0;
}

(reprise d'un code de vbfrance ;o))

le fichier essai permettait de voir s'il me réalisait bien le freelibrairy

kidpigeyre
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 févr. 2004 à 13:55
FreeLibrary et nettoyage des ressources est normalement garanti par le systeme quand il demappe un processus.
Si tu veux intercepter correctement le message, tu te fais une fenetre pour leur reception et traitement. Aucun besoin de l'afficher, de dimension 0 x 0 et transparente ira tres bien.
ciao...
BruNews, Admin CS, MVP Visual C++
0
dmp32 Messages postés 7 Date d'inscription jeudi 13 avril 2006 Statut Membre Dernière intervention 20 avril 2006
19 avril 2006 à 16:51
0
Rejoignez-nous