[OK] Fermer Gestionnaire de tâches Windows 8

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[OK] Fermer Gestionnaire de tâches Windows 8

Message par Ar-S »

J'ai retesté de vieux codes et surtout retâter un peu les API de windows et j'ai un soucis pour fermer le gestionnaire de tâches.
Je me dis que c'est une sécurité de W8 mais je trouve tout de même étrange que cela ne fonctionne pas.
Version grossière et sans thread ni callback mais qui devrait marcher car la fenêtre est bien détectée.
J'ajoute que ce code fonctionne pour les autres fenêtre que j'ai pu tester.

Code : Tout sélectionner

; A Lancer avec le debugger activé

GT.s="Gestionnaire des tâches"						;		Nom de la fenêtre à fermer
Try = 0

Repeat
	Delay(500)		;		Pas de fenêtre / pas de timer je fait donc le porc avec un delai
	Hwnd 	= 	FindWindow_(0,GT)			; 		On choppe l'handle de la fenêtre
	If Hwnd <> 0									;		S'il le trouve, 
		Debug "Fenêtre trouvée ! Handle : " + Str(hwnd)	; 	il l'affiche
		Ferme = DestroyWindow_(Hwnd)						;	Et tente de fermer cette foutue fenêtre
		If Not Ferme = 0												;	Si ça marche
			Debug "Fenêtre fermée !"								;	On le signale
			End															; et on quitte
		Else																;	sinon
			Debug " Erreur ! fenetre pas fermée !"				;	on le signale
		EndIf					
		TRY+1															; 	On incrémente le nombre de tentative de 1
	EndIf
Until Try = 15															;	Jusqu'à ce qu'il ait tenté 15 fois
End

je me suis dit que ça venait du x86, j'ai donc compilé en x64 mais sans plus de résultat. Vous avez une idée d'ou peut venir ce blocage ?
Dernière modification par Ar-S le ven. 28/févr./2014 22:59, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

Si ça marchait avec DestroyWindow, t'as pensé qu'avec cette API tu ne fais que fermer une fenêtre et les threads associés au Processus, t'es sûr que tout se termine bien.

Je crois qu'un Fichier - quitter (par simulation) marcherais beaucoup mieux! ou alors un TerminateProcess, la première solution est la mieux car elle termine normalement le processus.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

Encore plus simple, en mettant la fenêtre du gestionnaire de tâche au premier plan et en simulant la touche Echap, cela ferme la fenêtre.

J'ai pas window 8 d'installé donc je ne peux pas faire de test!
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

Apparemment, il y a deux interfaces, une simplifié et une autre complète, la simplifié on peut pas la fermer avec la touche Echap mais on devrait pouvoir le faire avec ALT+F4.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

Bon, je viens d'installer Window 8 et rien ne marche désolé!

Edit, ça marche mais avec les Privilèges Elevés (A cocher dans les options de compilation)

Code : Tout sélectionner

; A Lancer avec le debugger activé
Cocher : Privilèges Elevés 

#KEYEVENTF_UNICODE = 4

Procedure.l KeyCombi(Ctrl.l,Alt.l,Shift.l, key.a)
  Protected Extended.l,Scan.l,j.l=-1,Nb.l
  Protected  Dim SendInputData.INPUT(0)
  
  Nb=(Ctrl+Alt+Shift)*2
  If Key
    Nb=Nb+2
  EndIf 
  
  ReDim SendInputData.INPUT(Nb)
  
  If Ctrl 
    j=j+1     
    SendInputData(j)\type= #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk= #VK_CONTROL
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
  EndIf 
  
  If Alt
    j=j+1   
    SendInputData(j)\type= #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk= #VK_MENU
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
  EndIf
  
  If Shift 
    j=j+1      
    SendInputData(j)\type= #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk= #VK_SHIFT
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
  EndIf
  
  If Key 
    j=j+1  
    SendInputData(j)\type= #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk= Key
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE|Extended
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
    
    j=j+1
    SendInputData(j)\Type = #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk = Key
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE|#KEYEVENTF_KEYUP|Extended
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
  EndIf 
  
  If Shift 
    j=j+1     
    SendInputData(j)\type= #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk= #VK_SHIFT
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE|#KEYEVENTF_KEYUP
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
  EndIf
  
  If Alt 
    j=j+1     
    SendInputData(j)\type= #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk= #VK_MENU
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE|#KEYEVENTF_KEYUP
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
  EndIf
  
  If Ctrl
    j=j+1      
    SendInputData(j)\type= #INPUT_KEYBOARD
    SendInputData(j)\ki\wVk= #VK_CONTROL
    SendInputData(j)\ki\dwExtraInfo = 0
    SendInputData(j)\ki\dwFlags = #KEYEVENTF_UNICODE|#KEYEVENTF_KEYUP
    SendInputData(j)\ki\time = 0
    SendInputData(j)\ki\wScan = 0
  EndIf 
  
  SendInput_(Nb, SendInputData(0), SizeOf(INPUT))
  
EndProcedure


GT.s="Gestionnaire des tâches"                

Delay(500)  

Hwnd    =    FindWindow_(0, GT)        
If Hwnd <> 0                 

  SetForegroundWindow_(hwnd)
  Delay(1000)
  KeyCombi(0, 1, 0, #VK_F4)
  Delay(1000)
  
  If FindWindow_(0,"Gestionnaire des tâches")  = 0
    Debug "Fenêtre Fermée!"
  EndIf
  
EndIf

End
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fermer Gestionnaire de tâches Windows 8

Message par Backup »

essaye ça :

Code : Tout sélectionner

; trouve le handle d'une application
; et change la position de l'application trouve
; et force a quitter  ;)

hWinCalc = FindWindow_(#Null,"Gestionnaire des tâches de Windows")
Calldebugger
xw=100
yw=300
if hWinCalc
	SetWindowPos_ (hWinCalc, -1, xw, yw, 0, 0, #SWP_NOSIZE )
Endif
SendMessage_(hWinCalc,#WM_SYSCOMMAND,#SC_CLOSE,0)


; EPB
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

Je suis vert, ça fait 4H30 que je suis dessus :lol:

Marche aussi très bien sans Move:

Code : Tout sélectionner

; By Dobro
; trouve le handle d'une application
; et force a quitter  ;)

hWinCalc = FindWindow_(#Null,"Gestionnaire des tâches")
CallDebugger
If hWinCalc
   SetWindowPos_ (hWinCalc, -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE )
EndIf
SendMessage_(hWinCalc,#WM_SYSCOMMAND,#SC_CLOSE,0)
Delay(100)
If FindWindow_(#Null,"Gestionnaire des tâches") = 0
  Debug "Fonctionne, merci Dobro!"
Else
  Debug "Ne fonctionne pas"
EndIf 

; EPB
Dernière modification par nico le ven. 28/févr./2014 0:36, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fermer Gestionnaire de tâches Windows 8

Message par Backup »

bah .. un coup de bol :mrgreen: :)
Marche aussi très bien sans Move:
j'avais laissé le move, car je suis parti d'un exemple de sendmessage avec le move seulement ...
je n'ai eu plus qu'a chercher sur Microsoft, comment envoyer un message de terminaison :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

Ben heureusement que t'es intervenu parce que je continuais le truc pour faire fonctionner mon exemple sans que l'UAC n'apparaisse ce qui est tout à fait possible en passant par les tâches planifiées.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fermer Gestionnaire de tâches Windows 8

Message par Backup »

ben , là , précisément , tu me parles chinois :lol:

l'UAC ?? quezako que ct'affaire là bondiou la germaine ...
pis alors le : "en passant par les tâches planifiées." .....
Image
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

Ben en fait j'ai découvert ça en allant sur le forum Autoit, il est possible de lancer un programme avec les privilèges élevés en programmant une tâche, c'est comme ça que procède les anti-virus.

Donc se méfier et regarder ce qui est programmé dans le planificateur de tâche.

Je ferais un exemple quand j'aurais le temps, ça peut se programmer en ligne de commande ou en com.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fermer Gestionnaire de tâches Windows 8

Message par Backup »

ça peut toujours etre intéressant a connaitre :)
meme si je n'en vois pas l’intérêt que je pourrai en tirer, pour ce que je fait de mon ordi ... mais bon je coucherai moins bete :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Fermer Gestionnaire de tâches Windows 8

Message par Ar-S »

Merci pour vos réponses, je teste ça demain. Je rentre juste (4h47...) je vais me pieuter.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Fermer Gestionnaire de tâches Windows 8

Message par nico »

L' UAC , c'est l'avertissement de sécurité qui apparait pour installer un programme et qui requiert une action de l'utilisateur, cela permet donc d'écrire dans le dossier Program files, la base de registre etc...

Je suis étonné que tu ne puisses voir l'intérêt d'une telle chose ainsi que sa dangerosité.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Fermer Gestionnaire de tâches Windows 8

Message par Backup »

ben n'etant pas malfaisant, de nature, je vois plutot tout ces protocoles comme des limitations

ça me gave de ne pas pouvoir acceder a l'ensemble de mon ordi sans etre obligé de confirmer ceci ou cela ..

surtout lorsque la commande, viens du clavier.. de l'ordinateur meme ...
je peux comprendre la parano lorsqu'elle viens du reseau ...
mais meme déconnecté de celui-ci . les alertes continues ... :)

sur mon atari , j'etais pas si embété :lol:
alors tout ces trucs , ça me dépasse un peu :)
Répondre