begin process at 2012 02 09 20:44:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Tuer une tache par son nom!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tuer une tache par son nom!

jeudi 3 août 2006 à 11:31:06 | Tuer une tache par son nom!

perig

Bonjour,

Je cherche à tuer une tache!
 Plus exactement, je cherche à tuer un message d'erreur lancé a l'utilisation d'une fonction quand on n'a pas une clef matériel valide
(j'aurais une vrai clef bientôt mais la ca me gène pour dev)
Donc l'appel a une fonction d'une lib me lance une tâche du nom de "Protection Device not found!" (C'est juste un message d'avertissement avec un bouton ok à cocher) Le prob c'est que la fameuse fonction je l'appel toutes les secondes donc je n'ai pas le temps de clic que j'ai déjà un autre message et ca bloque tout

Et la je sèche! ca doit être un truc tout con pourtant!

Merci!

Ps : je suis en dev C++.net (MFC)

---Perig---
Pour vous servir 
Et parfois en galère 
Souvent même

jeudi 3 août 2006 à 16:05:19 | Re : Tuer une tache par son nom!

saifer

Membre Club
Salut,
Tu n'as pas du bien chercher dans le forum, ou dans les sources car je pense que c'est assez facile à trouver.
Je vais quand même te donner le bout de code qui permet de faire ce que tu demande, c'est un code que j'ai pris sur le site, il y a longtemps, donc je ne sais plus qui en est l'auteur, si il se reconnait

Voici le code que tu peux placer dans un thread :
<code>
while(1)
{
        PROCESSENTRY32 pe32 = {sizeof(pe32)};
        DWORD dwTaskCount = 0;
        HANDLE hProcessSnapPE = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
       
        if(hProcessSnapPE == (HANDLE)-1) return 0;
        if(Process32First(hProcessSnapPE, &pe32))
        {
          do
          {
              if(pe32.th32ProcessID)
              {
                if(strcmp(pe32.szExeFile, "nom_de_ta_tache.exe") == 0)
                {   
                    HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,0,pe32.th32ProcessID);
 
                     TerminateProcess(hProcess,1);
                    CloseHandle(hProcess);               
                }
                dwTaskCount++;
               }
            }
            while (dwTaskCount < MAX_TASKS && Process32Next(hProcessSnapPE, &pe32));
        }
  CloseHandle(hProcessSnapPE);
}
</code>

Ca boucle indéfiniement sur la liste des processus lancés, et à chaque fois que ca trouve nom_de_ta_tache.exe, ca le kick.

-{ Saifer }-


jeudi 3 août 2006 à 16:16:51 | Re : Tuer une tache par son nom!

perig

Oui, après avoir posté j'ai trouvé une source sur ce site

http://www.cppfrance.com/code.aspx?ID=20117

Le hic c'est que cette solution scan tous les process à la recherche du mien!
Si je lance ce truc toutes les sec ca fait plutôt lourd !!!
Je pensais donc trouver une solution plus simple mais il semblerait qu'il n'y en a pas.

Me reste plus qu'a me débrouiller pour avoir une clef un peut plus tôt pour pouvoir dev plus facilement!

Merci tout de même!
Ps : si qqn a une autre proposition je suis toujours preneur !

---Perig---
Pour vous servir 
Et parfois en galère 
Souvent même

jeudi 3 août 2006 à 16:25:48 | Re : Tuer une tache par son nom!

saifer

Membre Club
Non c'est pas spécialement lourd, enfin c relatif ^^
Tu lance le programme une fois au début, et en mettant le code dans un thread ca te bouffe pas ton proc et c'est bon, y a pas de soucis, moi je m'en servais.

Enfin si quelqu'un à une autre solution je suis aussi prenneur (ca peut tjrs servir)

-{ Saifer }-


jeudi 3 août 2006 à 16:36:13 | Re : Tuer une tache par son nom!

perig

Ha oui pardon, je n'avais pas noté que toi tu le fais tourner en boucle... (Je pensais appeler une fonction a chaque fois que j'en ai besoins)
Enfin je pense que c'est tout de même un peut lourd  c'est le scan permanant qui est un peut "gros" a mes yeux



---Perig---
Pour vous servir 
Et parfois en galère 
Souvent même
jeudi 3 août 2006 à 16:39:42 | Re : Tuer une tache par son nom!

saifer

Membre Club
Moi personnelement, quand je m'en servais, je le faisais tourner en boucle, et faisait une pause de 1sec à chaque passage, mais toi tu veux que le code s'execute plus souvant, c'est pour ca que j'ai enlevé la "pause", mais essai le, tu vera, ca bouff rien en proc, et en mémoire, pas grand chose.


-{ Saifer }-


jeudi 3 août 2006 à 17:46:08 | Re : Tuer une tache par son nom!

racpp

Administrateur CodeS-SourceS
Salut,
J'ai une idée mais je ne sais pas si elle est convenable dans ton cas. Tout dépend de la fontion de ta lib. Si l'affichage du messagebox bloque le déroulement de la fonction, ma méthode n'est pas applicable. Si, au contraire, le messagebox s'affiche sans empêcher la fontion de retourner, voici comment faire:

1- Appeler la fonction.
2- Chercher la fenêtre du messagebox avec FindWindow() ou FindWindowEx().
3- A partir du HWND de la fenêtre, récupérer le HWND du bouton "Ok" avec FindWindowEx().
4- Envoyer un message de simulation de clic sur ce bouton.
5- Traitement de la valeur de retour de ta fonction par exemple....

Tu pourras aussi tuer le process en récupérant son ID à partir du HWND retourné par FindWindow(). Mais je pense que la simulation du clic sur "Ok" suffit.
Tu n'auras donc à ajouter que 3 ou 4 lignes de code.
J'espère que cette solution marchera. Dans ce cas, tu es sûr de faire disparaitre la messagebox dès son apparition et poursuivre le déroulement normal de ton programme.
Voilà, j'espère avoir aidé un peu.
Bonne chance.

jeudi 3 août 2006 à 20:53:56 | Re : Tuer une tache par son nom!

vecchio56

Administrateur CodeS-SourceS
A partir du moment ou tu as un HWND, c'est facile:
GetWindowThreadProcessId, OpenProcess, TerminateProcess

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 4 août 2006 à 08:15:23 | Re : Tuer une tache par son nom!

perig

Merci, c'est ce genre de solution que je cherchais, j'ai tout de meme réusis a avancer malgrer cette contrainte donc si j'ai le temps j'essai tout ca ;o)

---Perig---
Pour vous servir 
Et parfois en galère 
Souvent même



Cette discussion est classée dans : message, fonction, cherche, tache, tuer


Répondre à ce message

Sujets en rapport avec ce message

Suprimmer un fichier [ par naney ] tout d'abort un grand merci au webmaster de ce site :D car j'en avais mare de cherche un site comme vbfranc.com mais qui parler du c et du c++Je cherc vérification du mot de passe [ par biscot19 ] Bonjour,Je cherche comment vérifier un mot de passe NT en C++.J'ai vu que la fonction NetUserChangePassword permettait de le faire mais comme son nom Réception de message à partir de la fonction Recvfrom [ par Roulet ] exécuter une fonction en arrière plan [ par sena ] Bonjour,kelk'un aurait - il un exemple simple d'exécution d'une fonction en arrière plan !Car la solution 1 ne fonctionne évidemment pas, car la fonct GDI et fonction OnDraw [ par BarthOlivier ] Salut a tous....J'ai une petite question concernant les routines graphique...Travaillant sous VB, je n'etais pas familiarisé avec les questions de con PB d'E/S fichier avec une DLL [ par huberdine ] Je cherche a faire une DLL en C, dans la quelle je puisse faire des E/S fichier.Mon probleme est le suivant : la fonction fopen refuse de fonctionner reseau: codage et verification du message [ par toto000 ] Bonjour, Est-ce que quelqu'un pourrait me donner des explications sur la parite simple (la fonction détecte le nombre impair d'erreur), la parite doub Fonction *char [ par moustachu ] Bonjour,Je suis en train de faire évoluer une appli qui a pas de paramétrage à sortir de l'appli. Tout est codé en dir et ça craint assez (ex : strcpy spliter un fichier.... [ par damdam04 ] salut le monde des programmeursj'ai deja posté un message sur le forum de VB sur le splitage de fichier... "je cherche comment décomposer des lignes, Recherche algo de la fonction ulltoa() [ par akboy7015 ] Actuellement, je développe sur VC7 et je travail beaucoup avec des __int64. Le problème est que la fonction ulltoa() n'a pas l'air d'exister.Bien ente


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,841 sec (3)

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