draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 7 juil. 2008 à 19:52
c'est gentil mais j'ai trouvé aussi, mais pas en vb, je le posterais peut etre a l'occasion sur cppfrance.com
kakenette
Messages postés218Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention15 novembre 20091 7 juil. 2008 à 19:07
Hello, désolée de reposter si tard encore, mais depuis j'ai trouver un moyen qui détecte instantanément avant même que le processus commence à charger sa mémoire, ses variables et ses threads, qui prend 0% en CPU et qui génère aucune fautes de page. Si sa t'intéresse toujours PM moi. Cette méthode peut également révoquer les droits sur certains processus. Efficace quand on ne veut pas que certaines personnes, virus ou autres tentent d’accéder, de se servir ou de lancer des applications non sollicitées.
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 27 janv. 2007 à 16:58
Salut Kakenette,
En effet cette source n'est pas vraiment utilisable, comme c'est indiquer dans la description j'esperais en la postant recevoir des conseils d'optimisation voir des suggestions de concepts differents afin de l'ameliorer.
Mais malheureusement la seule methode viable serait de faire un driver donc "pas possible" en VB
J'ai depuis refais le code via les api NT mais bien que plus rapide et generant bien moins d'erreur, ce n'est toujours pas terrible :(
++
kakenette
Messages postés218Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention15 novembre 20091 27 janv. 2007 à 04:35
Cependant! cette source connaît le même problème que j'avais. Beaucoup trop d' "Erreurs de page" ou "Page Fault" en anglais, sont générées. ceci peut causer des ecrans bleu indésirable. (crash de l'ordinateur)
Pour vous fair une simple idée, il suffit d'ouvrir votre gestionnaire de tâches. voir colonne "Erreurs de page".
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 22 sept. 2006 à 20:50
Nickel, merci ^_^
@+
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 22 sept. 2006 à 19:14
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 22 sept. 2006 à 19:01
C'est vrai que cette source aussi n'est pas toute récente (bien que le dernier post avant le mien l'était) ;)
En fait, j'ai cherché quelques trucs intéressants ce midi sur vbfrance; je suis tombé là dessus ^^
Mais comment suspends tu un processus sans énumérer puis suspendre tous ses threads ?
@+
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 22 sept. 2006 à 14:42
lu,
Eh wai j'avais utilise cette methode pour gagner un max de temps (pas besoin de rechecker chaque fois toute la liste, a l'epoque j'avais un p2 350Mhz, donc j'avais essayer de grapiller au max...
Depuis j'ai trouve une autre methode d'enumeration bien plus rapide, et une methode pour suspendre le processus directement sans suspendre tous ces threads donc bcp plus rapide, je ferais une mise a jour a l'occasion...
++
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 22 sept. 2006 à 13:43
Salut ;)
J'ai créé le même genre de truc, avec la même méthode (intervalle, pas de hook de l'API), et je dois dire que même si ce n'est pas propre, c'est quand même fort peu gourmand en CPU (0% dans taskmgr pour un timer.interval=1).
Donc cette méthode passe bien qaund même ;)
J'ai pas testé la source (je suis sous Linux), mais le bloc notes m'indique que tu check le NOMBRE de processus lancé à intervalles différents. Donc problèmes si :
-deux processus lancés à intervalle inférieure à l'intervalle de recherche
-pas de détection si un processus est killé et un est créé dans une faible intervalle.
@+
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 11 juil. 2006 à 16:41
Oui voilà, y'a pas de test sur le premier
Chez moi j'ai transformé le Do While... Loop en
Do ... Loop While
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 11 juil. 2006 à 11:40
Salut MadM@tt,
Merci, en effet on dirait mais y a un petit temps que j'y ai plus toucher donc je saurais po te dire exactement...
Tu parles du premier avant de faire la boucle ?
++
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 10 juil. 2006 à 22:10
Dans ta fonction GetThreadsListSuspend, j'ai l'impression que le premier thread de la capture des threads du système n'est pas vérifié.
Extrait du code :
# Public Sub GetThreadsListSuspend(ByVal ProcessID As Long)
# hToolHelp2 = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, ProcessID)
# mm.dwSize = Len(mm)
# If Thread32First(hToolHelp2, mm) Then
# mm.dwSize = Len(mm)
# Do While Thread32Next(hToolHelp2, mm)
# If mm.th32OwnerProcessID = ProcessID Then
# ' si le thread a bien processId pour processus parent, on le suspend
# lhwndProcess = OpenThread(&H2, 0, mm.th32ThreadID)
# SuspendThread lhwndProcess
# CloseHandle lhwndProcess
# End If
# Loop
# End If
# CloseHandle hToolHelp2
# End Sub
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 9 juil. 2006 à 13:25
Bravo il y a énormément de bout de code intéressant dedans...
C'est une vraie mine ! Merci
jrbleboss
Messages postés480Date d'inscriptionjeudi 6 mai 2004StatutMembreDernière intervention 3 septembre 20071 2 oct. 2005 à 18:18
7 juil. 2008 à 19:52
7 juil. 2008 à 19:07
27 janv. 2007 à 16:58
En effet cette source n'est pas vraiment utilisable, comme c'est indiquer dans la description j'esperais en la postant recevoir des conseils d'optimisation voir des suggestions de concepts differents afin de l'ameliorer.
Mais malheureusement la seule methode viable serait de faire un driver donc "pas possible" en VB
J'ai depuis refais le code via les api NT mais bien que plus rapide et generant bien moins d'erreur, ce n'est toujours pas terrible :(
++
27 janv. 2007 à 04:35
Pour vous fair une simple idée, il suffit d'ouvrir votre gestionnaire de tâches. voir colonne "Erreurs de page".
22 sept. 2006 à 20:50
@+
22 sept. 2006 à 19:14
Pour suspendre le process:
http://www.vbfrance.com/code.aspx?ID=39659
++
22 sept. 2006 à 19:01
En fait, j'ai cherché quelques trucs intéressants ce midi sur vbfrance; je suis tombé là dessus ^^
Mais comment suspends tu un processus sans énumérer puis suspendre tous ses threads ?
@+
22 sept. 2006 à 14:42
Eh wai j'avais utilise cette methode pour gagner un max de temps (pas besoin de rechecker chaque fois toute la liste, a l'epoque j'avais un p2 350Mhz, donc j'avais essayer de grapiller au max...
Depuis j'ai trouve une autre methode d'enumeration bien plus rapide, et une methode pour suspendre le processus directement sans suspendre tous ces threads donc bcp plus rapide, je ferais une mise a jour a l'occasion...
++
22 sept. 2006 à 13:43
J'ai créé le même genre de truc, avec la même méthode (intervalle, pas de hook de l'API), et je dois dire que même si ce n'est pas propre, c'est quand même fort peu gourmand en CPU (0% dans taskmgr pour un timer.interval=1).
Donc cette méthode passe bien qaund même ;)
J'ai pas testé la source (je suis sous Linux), mais le bloc notes m'indique que tu check le NOMBRE de processus lancé à intervalles différents. Donc problèmes si :
-deux processus lancés à intervalle inférieure à l'intervalle de recherche
-pas de détection si un processus est killé et un est créé dans une faible intervalle.
@+
11 juil. 2006 à 16:41
Chez moi j'ai transformé le Do While... Loop en
Do ... Loop While
11 juil. 2006 à 11:40
Merci, en effet on dirait mais y a un petit temps que j'y ai plus toucher donc je saurais po te dire exactement...
Tu parles du premier avant de faire la boucle ?
++
10 juil. 2006 à 22:10
Extrait du code :
# Public Sub GetThreadsListSuspend(ByVal ProcessID As Long)
# hToolHelp2 = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, ProcessID)
# mm.dwSize = Len(mm)
# If Thread32First(hToolHelp2, mm) Then
# mm.dwSize = Len(mm)
# Do While Thread32Next(hToolHelp2, mm)
# If mm.th32OwnerProcessID = ProcessID Then
# ' si le thread a bien processId pour processus parent, on le suspend
# lhwndProcess = OpenThread(&H2, 0, mm.th32ThreadID)
# SuspendThread lhwndProcess
# CloseHandle lhwndProcess
# End If
# Loop
# End If
# CloseHandle hToolHelp2
# End Sub
9 juil. 2006 à 13:25
C'est une vraie mine ! Merci
2 oct. 2005 à 18:18