bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 2019
-
27 juin 2006 à 18:16
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011
-
6 avril 2010 à 17:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011 6 avril 2010 à 17:44
yugoboss0 a raison pour cette clef du registre. Ceci est souvent employé dans les cyber-cafés
yugoboss0
Messages postés14Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 9 mars 2011 30 mars 2010 à 23:44
Bonjour,
Pour que le gestionnaire de tâches soit désactivé, il suffit d'écrire dans le registre à la clé suivante : "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", c'est une clé "REG_DWORD" qui doit être à 1.
cs_spike20
Messages postés3Date d'inscriptiondimanche 6 novembre 2005StatutMembreDernière intervention20 octobre 2007 20 oct. 2007 à 03:17
si le programme arrete avant de faire le Close #1 il aura seulement à utiliser ENDITALL (programme arretant les processus comme avec taskmrg.exe) ou mettre un validation dans son code comme le combo ESC+ENTRE avec un timer dune intervalle de 1 milliseconde :
Dim xx As Boolean
Private Sub Timer1_Timer()
If GetAsyncKeyState(27) And GetAsyncKeyState(13) Then
xx = True
Unload Me
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If xx = True Then
End
Else
Cancel = 1
End If
Close #1
End Sub
grandzebu
Messages postés27Date d'inscriptionvendredi 22 août 2003StatutMembreDernière intervention23 décembre 2017 13 déc. 2006 à 01:11
Super simple ... et efficace. Pas très académique ? Peut-être mais ne pas oublier le but : une machine qui n'utilise qu'un seul et unique programme lancé avec Windows (Machine en libre service dans mon cas) Ya pas de risque de lancer le taskmanager avant ou de faire quoi que ce soit puisque explorer n'est pas lancé !
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011 29 oct. 2006 à 16:23
bonne source, il faudrait y penser
pymaster
Messages postés74Date d'inscriptionvendredi 14 juillet 2006StatutMembreDernière intervention14 août 2006 11 août 2006 à 17:40
vérouillez le fichier est une bonne idée, mais une personne qui sait faire un copier coller et qui connais l'emplacement du fichier taskmgr.exe pourra facilement ouvrir le Task Manager dans un autre répertoire.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 5 juil. 2006 à 15:56
il te l'as dit ^^
visible dans SPY++
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 5 juil. 2006 à 15:48
Comment t'a fait pour savoir que #32770 était le nom de classe du gestionnaire des taches ?
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 5 juil. 2006 à 14:27
Erf lol, en effet, ca marche si le gestionnaire de tache est ouvert et qu'il est le premier de la liste #32770, j'ai fait ca d'apres spy++ et j'ai ouvert le gestionnaire puis teste et ca marchait, je pensais donc que c'etait bien le nom de la classe...
++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 5 juil. 2006 à 14:18
FindWindow("#32770", vbNullString) :o
c'est franchement radical ^^ c'est le nom de classe des boites de dialogues, MsgBox et autres....
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 5 juil. 2006 à 13:35
re,
En effet Renfield, mon exemple ne marchera que pour les version francaise.
Voici la meme methode mais avec le nom de la class, en esperant que ce soit le meme sous toutes les versions...
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim l As Long
l = FindWindow("#32770", vbNullString)
If l > 0 Then Call SendMessage(l, &H10, 0, 0)
End Sub
A tester...
++
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 juil. 2006 à 17:31
tu as l'API GetWindowThreadProcessId, qui doit pouvoir être un point de départ...
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 1 juil. 2006 à 17:22
Ah c'est bien sa le click sur bouton fermer !
En plus l'API findwindows est simple à utiliser.
sinon quelqun connaît une api qui permetterai d'avoir le nom d'un executable à partir de son HWND ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 juil. 2006 à 13:27
Ca "simule" un click sur le bouton fermer de la fenêtre...
pas d'inquiétude sur le process, il est bien terminé.
J'ai quelques reserves, concernant ce code...
si on a une autre version de Windows, ou tout simplement dans une autre langue, l'intutilé de la fenêtre recherché sera erronné...
il vaus mieux rechercher le process, d'après le nom de l'Exe, qui, lui, ne varie pas (ou peu)
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 1 juil. 2006 à 11:41
Eh le mot essayer tu connais ? lol
++
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 1 juil. 2006 à 02:14
ouais sa ferme une fennetre mais sa kill vraiment le process de la fennetre ? car sa vire les fennetre qui a dans le bt application mais sa peut pas killer tt ce qui a dans le bouton process vu que certain n'ont pas de fennetre ? :-/
arf la je m'embrouille :s
Diablaman
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 1 juil. 2006 à 01:20
Exemple avec FindWindow:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim l As Long
l = FindWindow(vbNullString, "Gestionnaire des tâches de Windows")
if l > 0 Then Call SendMessage(l, &H10, 0, 0)
End Sub
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 30 juin 2006 à 21:54
l'erreur etais dans le timer vla la maj scuzer avais mis mon ancien timer XD
Private Sub Timer1_Timer()
For i = 1 To List1.ListCount
If List1.List(i) = "MSNMSGR.EXE" Then
ProcessTerminate (List2.List(i))
End If
Next i
ProcessList
End Sub
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 30 juin 2006 à 21:52
editer les droits sur un fichier laisse trop de trace , la bdr est sympa mais plus compliquer a utiliser que se code ^^
moi je dit que le code de base est une bonne idee et tres cours et fonctionne bien ^^ pour le fait de killer le taskmanager deja ouvert lors du logiciel ses vrai que les droit ou meme le reg ou autre serais simple mais vu que une majoritee des gens sont sous windows xp (et deja meme certain sur vista) bah ses nikel ^^ pour ceux qui sont en dessous je leur conseille de faire un listing des process et de looker apres le taskmanager ^^ et une fois qu'il est la hop il le kill je cherche apres ca et ej vous met la source ici (je l'avais fait pour msn afin d'emmerder un poto :p)
dans une form:
Public Function ProcessList()
List1.Clear
List2.Clear
Dim hSnapshot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapshot = 0 Then Exit Function
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapshot, uProcess)
Do While r
List1.AddItem uProcess.szexeFile
List2.AddItem uProcess.th32ProcessID
r = ProcessNext(hSnapshot, uProcess)
Loop
End Function
Private Sub Command2_Click()
ProcessTerminate (List2.List(List1.ListIndex))
End Sub
Private Sub Form_Load()
ProcessList
End Sub
Private Sub Timer1_Timer()
For i = 1 To List1.ListCount
If List1.List(i) = "msnmsgr.exe" Then
ProcessTerminate (List2.List(i))
End If
Next i
For b = 1 To List1.ListCount
If List1.List(i) = "MSNMSGR.EXE" Then
ProcessTerminate (List2.List(i))
End If
Next b
ProcessList
End Sub
dans un module :
Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
Private Type LUID
LowPart As Long
HighPart As Long
End Type
Private Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type
Public Const MAX_PATH As Integer = 260
Public Const TH32CS_SNAPPROCESS As Long = 2&
Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szexeFile As String * MAX_PATH
End Type
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Function ProcessTerminate(Optional lProcessID As Long, Optional lHwndWindow As Long) As Boolean
Dim lhwndProcess As Long
Dim lExitCode As Long
Dim lRetVal As Long
Dim lhThisProc As Long
Dim lhTokenHandle As Long
Dim tLuid As LUID
Dim tTokenPriv As TOKEN_PRIVILEGES, tTokenPrivNew As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long
On Error Resume Next
If lHwndWindow Then
'Get the process ID from the window handle
lRetVal = GetWindowThreadProcessId(lHwndWindow, lProcessID)
End If
If lProcessID Then
'Give Kill permissions to this process
lhThisProc = GetCurrentProcess
OpenProcessToken lhThisProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, lhTokenHandle
LookupPrivilegeValue "", SE_DEBUG_NAME, tLuid
'Set the number of privileges to be change
tTokenPriv.PrivilegeCount = 1
tTokenPriv.TheLuid = tLuid
tTokenPriv.Attributes = SE_PRIVILEGE_ENABLED
'Enable the kill privilege in the access token of this process
AdjustTokenPrivileges lhTokenHandle, False, tTokenPriv, Len(tTokenPrivNew), tTokenPrivNew, lBufferNeeded
'Open the process to kill
lhwndProcess = OpenProcess(PROCESS_TERMINAT, 0, lProcessID)
If lhwndProcess Then
'Obtained process handle, kill the process
ProcessTerminate = CBool(TerminateProcess(lhwndProcess, lExitCode))
Call CloseHandle(lhwndProcess)
End If
End If
On Error GoTo 0
End Function
voila voila ^^ je vient de retester et sa veut plus allez avec msn va savoir pk du me gourrer dans une lettre du nom du process ou koi m'enfin sinon suis sur que sa fonctionne ^^
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 30 juin 2006 à 20:37
erf les killeur de processus c'est pas ce qu'il manque sur le site! Avez vous au moins regarde ?
Sinon plus propre, utiliser l'api FindWindow comme suggere plus haut...
Pour en revenir au verrouillage, je pense que c'est vraiment pas une bonne methode, et il est preferable d'utiliser la bdr ou d'editer les droits sur le fichier...
++
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 30 juin 2006 à 20:30
Voila aidez vous de sa :
c'est un mini (mais alors tres mini) antivirus qui kill une liste de processus mise dans un fichier texte, je l'ai fait parce que j'avait des virus que j'arrivai pas à enlever alors je me suis décider à tout simplement les killer voila:
http://ratala.free.fr/miniav.php (c'est la source bien sur)
@+
adamo901
Messages postés139Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 8 décembre 2008 30 juin 2006 à 18:20
Merci diablamanshadow :-)
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 30 juin 2006 à 17:46
a l'ancienne sa l'arrange pas se serais bien de lui donner le code de "a l'ancienne" car moi non plus je vois pas trop ^^ m'enfin moi la premiere methode marche donc a l'ancienne m'interesse pas mais lui surement ^^
Diablaman
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 30 juin 2006 à 14:39
Domage...
t'a plus qu'a faire à l'ancienne ^^
adamo901
Messages postés139Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 8 décembre 2008 30 juin 2006 à 12:17
:-( ça marche pas non plus sur Windows 2000!!
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 29 juin 2006 à 21:14
Ah c'est pour sa alors !
sinon ya taskkill je sais pas si sa marche sur autre chose que xp:
taskkill.exe /F /IM taskmgr.exe
voila j'espere que sa va marcher
@+
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 29 juin 2006 à 21:08
tskill n'est pas sous les version inferieur a xp apparement ^^
adamo901
Messages postés139Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 8 décembre 2008 29 juin 2006 à 16:25
shell "tskill tasjmgr" ne fonctionne pas chez moi
N.B J'utilise Windows 2000
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 29 juin 2006 à 14:01
bah moi ses un logiciel qui tournerais de tt maniere que sur xp donc sa me convient parfaitement ^^
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 29 juin 2006 à 09:43
j'aime bien le principe de verrouiller ainsi le fichier....
par contre, c'est un peu radical, et si l'on désire le lancer, on ne peut pas (je sais, c'est le but)
mais il va falloir faire une confiance aveugle aux programmes qui vont tourner sur la machine... le Task Manager est utile, tout de même.
en fait, que je ne suis pas convaincu (mais alors pas du tout) que tskill soit présent avant Windows Xp
les moyens ne manquent pas...
il va donc falloir coder ça à la main, si tu veux être un peu compatible :
soit par un EnumProcesses (et ses amis)
ou par WMI....
à toi de voir
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 29 juin 2006 à 09:31
cf le commentaire de Renfield concernant FindWindow / DestroyWindow
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 29 juin 2006 à 08:45
bouv une alternative je suis pas contre mais ici sa touche pas au registre , ses 2 ligne de code et sa marche nikel je vois pas se que je pourrais demander de plus ^^' mais si tu a une "autre alternative" plus propre et plus optimisee que deux ligne , sans toucher le registre et qui fonctionne sans probleme suis prenneur XD
a bonne entende
Diablaman
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 28 juin 2006 à 21:35
DACODAC !
Cependant, je reste sur ma position en disant qu'une alternative à cette méthode est préférable.
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 28 juin 2006 à 18:58
Renfield> Oui je sais c'est pour sa que c'est pas grave si y'a un crash
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 28 juin 2006 à 18:17
a ok bah alors je vire la ligne ^^
mici renfield
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 juin 2006 à 18:15
Ratala, bouv mentionne un crash... pas de Form_Unload à ce moment là^^
si elle plante (ou est fermée), Windows relache de toute facon, de lui même les descripteurs de fichiers qu'elle a pu ouvrir
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 28 juin 2006 à 18:15
je prefere la prevoyance que le risque et je suis plus a 1 ligne pres dans mon prog ^^
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 28 juin 2006 à 18:10
Le fichier est refermée des que l'aplication est quittée, normalement le
Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
sert a rien
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 28 juin 2006 à 17:35
Que va-t-il se passer si l'appli plante avec que Form_Unload ne soit appelée ?
Et ne venez pas me dire mon appli ne plante pas !
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 28 juin 2006 à 15:51
adamo la je veux pas etre mechant mais sa solution fonctionne sa prend +- une demi seconde pour qu'il le ferme mais il le kill proprement :p donc :
Private Sub Form_Load()
shell "tskill taskmgr"
Open "C:\windows\system32\taskmgr.exe" For Random Lock Read As #1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
merci pour ce super code ^^
Diablaman
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 28 juin 2006 à 15:18
tskill permet de fermer un processus (ici le taskmanager).
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 28 juin 2006 à 15:10
Salut, c'est cher et ami ^^
et puis chez moi sa marche tres bien !
shell "tskill taskmgr"
je fais exactement sa et sa kill le gestionnaire des taches
adamo901
Messages postés139Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 8 décembre 2008 28 juin 2006 à 14:33
Désolé chèr(e) ami(e)!! ton truc avec tskill ne fonctionne absolument pas.
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 28 juin 2006 à 12:33
Je me suis trompé c'est
shell "tskill taskmgr"
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 28 juin 2006 à 12:32
Ou sinon
shell "tskill tasjmgr"
y'a pas plus simple je le vous garantie !
adamo901
Messages postés139Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 8 décembre 2008 28 juin 2006 à 11:37
Merci diablamanshadow pour ton encouragement.
Je ne comprends pas ce que "PAS PROPRE veut dire ici" Puis que ça fonctionne sans endomager le taskmanager!!!
Renfield : une petite explication sur ta proposition : FindWindow / DestroyWindow sera la bienvenue ;-)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 juin 2006 à 10:56
"...si tu pouvais me trouver..."
un simple FindWindow / DestroyWindow suffisent....
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 28 juin 2006 à 05:32
bonjour,
et oui j'ai pas dodo ^^ bah sinon je vient de tester le code car je cherchais un desesperement comme celui ci
pour precision vla le code pour moi:
Private Sub Form_Load()
Open "C:\windows\system32\taskmgr.exe" For Random Lock Read As #1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
moi il marche a merveille certe il n'est pas propre mais il marche super nikel et pas besoin de changer le registre !!!
de plus quand on ferme le prog il redonne bien la main et on peut le rouvrir ^^
j'ai qu'un seul chose a dire 10/10 garanti :p car t le seul qui je trouve a reussi a bloquer le taskmanager sans afficher de message que l'admin la interdit ou quoi , qui l'empeche sans passer par des keypress ou le registre ,
qui ne tien qu'en 2 lignes et qui pour couronner le tt fonctionne ^^
cependant il y a toujours un mais ^^ donc je met mon mais :p quand j'ouvre le task avant d'ouvrir l'appli et que par la suite j'ouvre l'appli bah le taskmanager reste :p si je le ferme je sais plus le rouvrir (tant que le prog est ouvert du moins)
donc tu aurais pas une jolie ligne pour killer cette fennetre au cas ou un mec aurais tester comme moi de l'ouvrir avant l'appli ?
sinon j'ai aussi fait un ptit module pour trouver le taskmanager car bah oui tt le monde la pas sur le c ni dans WINNT (j'utilise le meme code pour referencer automatiquement mes ocx pour pas que l'utilisateur se fatigue ...)
donc voila nikel :p je met un ptit 10/10 les autres ont beau dire c'est pas propre et sa risque de modifier le task moi j'ai tester et adopter :p
sinon si tu pouvais me trouver la ptite ligne qui ferme le task au cas ou il serais deja ouvert lors de l'ouverture du prog se serais le comble :p
merci a toi ;-)
Diablaman
ps: vla mon mail diablaman@hotmail.com
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 27 juin 2006 à 22:21
Salut a tous,
Il y a les cles de restrictions pour desactiver le gestionnaire de taches dans les regles de l'art! ;)
Voir du cote de HKUS\crosoft\vindows\currentversion\policie (DisableTaskMgr)
++
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 27 juin 2006 à 19:14
Ouai c'est pas genial et puis si par erreur tu modifie le taskmgr apres s'il marche plus !
Mais bon sinon je trouve que c'est une bonne idée
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 27 juin 2006 à 19:00
Oui en effet, c'est loin d'être propre ton code !
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 27 juin 2006 à 18:16
Evidemment que le TaskManager est bloqué car tu l'ouvre en disant "Je suis le seul a y avoir accès !".
Cela fonctionne fonctionne peut-être, mais ce n'est pas très propres.
Je ne me suis jamais penché sur la question donc je ne pourrai pas t'aider, mais si tu trouves une autre solution FONCE !
6 avril 2010 à 17:44
30 mars 2010 à 23:44
Pour que le gestionnaire de tâches soit désactivé, il suffit d'écrire dans le registre à la clé suivante : "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", c'est une clé "REG_DWORD" qui doit être à 1.
Soit le code suivant (Sans API excusez-moi) :
option explicit
Private WshShell as Object
Form_Load()
Set WshShell = CreateObject("wscript.shell")
WshShell.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", 1, "REG_DWORD"
end sub
Form_Unload()
WshShell.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr"
end sub
Voila !
20 oct. 2007 à 03:17
Dim xx As Boolean
Private Sub Timer1_Timer()
If GetAsyncKeyState(27) And GetAsyncKeyState(13) Then
xx = True
Unload Me
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If xx = True Then
End
Else
Cancel = 1
End If
Close #1
End Sub
13 déc. 2006 à 01:11
29 oct. 2006 à 16:23
11 août 2006 à 17:40
5 juil. 2006 à 15:56
visible dans SPY++
5 juil. 2006 à 15:48
5 juil. 2006 à 14:27
++
5 juil. 2006 à 14:18
c'est franchement radical ^^ c'est le nom de classe des boites de dialogues, MsgBox et autres....
5 juil. 2006 à 13:35
En effet Renfield, mon exemple ne marchera que pour les version francaise.
Voici la meme methode mais avec le nom de la class, en esperant que ce soit le meme sous toutes les versions...
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim l As Long
l = FindWindow("#32770", vbNullString)
If l > 0 Then Call SendMessage(l, &H10, 0, 0)
End Sub
A tester...
++
1 juil. 2006 à 17:31
1 juil. 2006 à 17:22
En plus l'API findwindows est simple à utiliser.
sinon quelqun connaît une api qui permetterai d'avoir le nom d'un executable à partir de son HWND ?
1 juil. 2006 à 13:27
pas d'inquiétude sur le process, il est bien terminé.
J'ai quelques reserves, concernant ce code...
si on a une autre version de Windows, ou tout simplement dans une autre langue, l'intutilé de la fenêtre recherché sera erronné...
il vaus mieux rechercher le process, d'après le nom de l'Exe, qui, lui, ne varie pas (ou peu)
1 juil. 2006 à 11:41
++
1 juil. 2006 à 02:14
arf la je m'embrouille :s
Diablaman
1 juil. 2006 à 01:20
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim l As Long
l = FindWindow(vbNullString, "Gestionnaire des tâches de Windows")
if l > 0 Then Call SendMessage(l, &H10, 0, 0)
End Sub
30 juin 2006 à 21:54
Private Sub Timer1_Timer()
For i = 1 To List1.ListCount
If List1.List(i) = "MSNMSGR.EXE" Then
ProcessTerminate (List2.List(i))
End If
Next i
ProcessList
End Sub
30 juin 2006 à 21:52
moi je dit que le code de base est une bonne idee et tres cours et fonctionne bien ^^ pour le fait de killer le taskmanager deja ouvert lors du logiciel ses vrai que les droit ou meme le reg ou autre serais simple mais vu que une majoritee des gens sont sous windows xp (et deja meme certain sur vista) bah ses nikel ^^ pour ceux qui sont en dessous je leur conseille de faire un listing des process et de looker apres le taskmanager ^^ et une fois qu'il est la hop il le kill je cherche apres ca et ej vous met la source ici (je l'avais fait pour msn afin d'emmerder un poto :p)
dans une form:
Public Function ProcessList()
List1.Clear
List2.Clear
Dim hSnapshot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapshot = 0 Then Exit Function
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapshot, uProcess)
Do While r
List1.AddItem uProcess.szexeFile
List2.AddItem uProcess.th32ProcessID
r = ProcessNext(hSnapshot, uProcess)
Loop
End Function
Private Sub Command2_Click()
ProcessTerminate (List2.List(List1.ListIndex))
End Sub
Private Sub Form_Load()
ProcessList
End Sub
Private Sub Timer1_Timer()
For i = 1 To List1.ListCount
If List1.List(i) = "msnmsgr.exe" Then
ProcessTerminate (List2.List(i))
End If
Next i
For b = 1 To List1.ListCount
If List1.List(i) = "MSNMSGR.EXE" Then
ProcessTerminate (List2.List(i))
End If
Next b
ProcessList
End Sub
dans un module :
Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
Private Type LUID
LowPart As Long
HighPart As Long
End Type
Private Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type
Public Const MAX_PATH As Integer = 260
Public Const TH32CS_SNAPPROCESS As Long = 2&
Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szexeFile As String * MAX_PATH
End Type
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Function ProcessTerminate(Optional lProcessID As Long, Optional lHwndWindow As Long) As Boolean
Dim lhwndProcess As Long
Dim lExitCode As Long
Dim lRetVal As Long
Dim lhThisProc As Long
Dim lhTokenHandle As Long
Dim tLuid As LUID
Dim tTokenPriv As TOKEN_PRIVILEGES, tTokenPrivNew As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long
Const PROCESS_ALL_ACCESS &H1F0FFF, PROCESS_TERMINAT &H1
Const ANYSIZE_ARRAY 1, TOKEN_ADJUST_PRIVILEGES &H20
Const TOKEN_QUERY &H8, SE_DEBUG_NAME As String "SeDebugPrivilege"
Const SE_PRIVILEGE_ENABLED = &H2
On Error Resume Next
If lHwndWindow Then
'Get the process ID from the window handle
lRetVal = GetWindowThreadProcessId(lHwndWindow, lProcessID)
End If
If lProcessID Then
'Give Kill permissions to this process
lhThisProc = GetCurrentProcess
OpenProcessToken lhThisProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, lhTokenHandle
LookupPrivilegeValue "", SE_DEBUG_NAME, tLuid
'Set the number of privileges to be change
tTokenPriv.PrivilegeCount = 1
tTokenPriv.TheLuid = tLuid
tTokenPriv.Attributes = SE_PRIVILEGE_ENABLED
'Enable the kill privilege in the access token of this process
AdjustTokenPrivileges lhTokenHandle, False, tTokenPriv, Len(tTokenPrivNew), tTokenPrivNew, lBufferNeeded
'Open the process to kill
lhwndProcess = OpenProcess(PROCESS_TERMINAT, 0, lProcessID)
If lhwndProcess Then
'Obtained process handle, kill the process
ProcessTerminate = CBool(TerminateProcess(lhwndProcess, lExitCode))
Call CloseHandle(lhwndProcess)
End If
End If
On Error GoTo 0
End Function
voila voila ^^ je vient de retester et sa veut plus allez avec msn va savoir pk du me gourrer dans une lettre du nom du process ou koi m'enfin sinon suis sur que sa fonctionne ^^
30 juin 2006 à 20:37
Sinon plus propre, utiliser l'api FindWindow comme suggere plus haut...
Pour en revenir au verrouillage, je pense que c'est vraiment pas une bonne methode, et il est preferable d'utiliser la bdr ou d'editer les droits sur le fichier...
++
30 juin 2006 à 20:30
c'est un mini (mais alors tres mini) antivirus qui kill une liste de processus mise dans un fichier texte, je l'ai fait parce que j'avait des virus que j'arrivai pas à enlever alors je me suis décider à tout simplement les killer voila:
http://ratala.free.fr/miniav.php (c'est la source bien sur)
@+
30 juin 2006 à 18:20
30 juin 2006 à 17:46
Diablaman
30 juin 2006 à 14:39
t'a plus qu'a faire à l'ancienne ^^
30 juin 2006 à 12:17
29 juin 2006 à 21:14
sinon ya taskkill je sais pas si sa marche sur autre chose que xp:
taskkill.exe /F /IM taskmgr.exe
voila j'espere que sa va marcher
@+
29 juin 2006 à 21:08
29 juin 2006 à 16:25
N.B J'utilise Windows 2000
29 juin 2006 à 14:01
29 juin 2006 à 09:43
par contre, c'est un peu radical, et si l'on désire le lancer, on ne peut pas (je sais, c'est le but)
mais il va falloir faire une confiance aveugle aux programmes qui vont tourner sur la machine... le Task Manager est utile, tout de même.
en fait, que je ne suis pas convaincu (mais alors pas du tout) que tskill soit présent avant Windows Xp
les moyens ne manquent pas...
il va donc falloir coder ça à la main, si tu veux être un peu compatible :
soit par un EnumProcesses (et ses amis)
ou par WMI....
à toi de voir
29 juin 2006 à 09:31
29 juin 2006 à 08:45
a bonne entende
Diablaman
28 juin 2006 à 21:35
Cependant, je reste sur ma position en disant qu'une alternative à cette méthode est préférable.
28 juin 2006 à 18:58
28 juin 2006 à 18:17
mici renfield
28 juin 2006 à 18:15
si elle plante (ou est fermée), Windows relache de toute facon, de lui même les descripteurs de fichiers qu'elle a pu ouvrir
28 juin 2006 à 18:15
28 juin 2006 à 18:10
Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
sert a rien
28 juin 2006 à 17:35
Et ne venez pas me dire mon appli ne plante pas !
28 juin 2006 à 15:51
Private Sub Form_Load()
shell "tskill taskmgr"
Open "C:\windows\system32\taskmgr.exe" For Random Lock Read As #1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
merci pour ce super code ^^
Diablaman
28 juin 2006 à 15:18
28 juin 2006 à 15:10
et puis chez moi sa marche tres bien !
shell "tskill taskmgr"
je fais exactement sa et sa kill le gestionnaire des taches
28 juin 2006 à 14:33
28 juin 2006 à 12:33
shell "tskill taskmgr"
28 juin 2006 à 12:32
shell "tskill tasjmgr"
y'a pas plus simple je le vous garantie !
28 juin 2006 à 11:37
Je ne comprends pas ce que "PAS PROPRE veut dire ici" Puis que ça fonctionne sans endomager le taskmanager!!!
Renfield : une petite explication sur ta proposition : FindWindow / DestroyWindow sera la bienvenue ;-)
28 juin 2006 à 10:56
un simple FindWindow / DestroyWindow suffisent....
28 juin 2006 à 05:32
et oui j'ai pas dodo ^^ bah sinon je vient de tester le code car je cherchais un desesperement comme celui ci
pour precision vla le code pour moi:
Private Sub Form_Load()
Open "C:\windows\system32\taskmgr.exe" For Random Lock Read As #1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
moi il marche a merveille certe il n'est pas propre mais il marche super nikel et pas besoin de changer le registre !!!
de plus quand on ferme le prog il redonne bien la main et on peut le rouvrir ^^
j'ai qu'un seul chose a dire 10/10 garanti :p car t le seul qui je trouve a reussi a bloquer le taskmanager sans afficher de message que l'admin la interdit ou quoi , qui l'empeche sans passer par des keypress ou le registre ,
qui ne tien qu'en 2 lignes et qui pour couronner le tt fonctionne ^^
cependant il y a toujours un mais ^^ donc je met mon mais :p quand j'ouvre le task avant d'ouvrir l'appli et que par la suite j'ouvre l'appli bah le taskmanager reste :p si je le ferme je sais plus le rouvrir (tant que le prog est ouvert du moins)
donc tu aurais pas une jolie ligne pour killer cette fennetre au cas ou un mec aurais tester comme moi de l'ouvrir avant l'appli ?
sinon j'ai aussi fait un ptit module pour trouver le taskmanager car bah oui tt le monde la pas sur le c ni dans WINNT (j'utilise le meme code pour referencer automatiquement mes ocx pour pas que l'utilisateur se fatigue ...)
donc voila nikel :p je met un ptit 10/10 les autres ont beau dire c'est pas propre et sa risque de modifier le task moi j'ai tester et adopter :p
sinon si tu pouvais me trouver la ptite ligne qui ferme le task au cas ou il serais deja ouvert lors de l'ouverture du prog se serais le comble :p
merci a toi ;-)
Diablaman
ps: vla mon mail diablaman@hotmail.com
27 juin 2006 à 22:21
Il y a les cles de restrictions pour desactiver le gestionnaire de taches dans les regles de l'art! ;)
Voir du cote de HKUS\crosoft\vindows\currentversion\policie (DisableTaskMgr)
++
27 juin 2006 à 19:14
Mais bon sinon je trouve que c'est une bonne idée
27 juin 2006 à 19:00
27 juin 2006 à 18:16
Cela fonctionne fonctionne peut-être, mais ce n'est pas très propres.
Je ne me suis jamais penché sur la question donc je ne pourrai pas t'aider, mais si tu trouves une autre solution FONCE !