Et puis WM_CLOSE est moins goret que de tuer violement la pauvre appli au travers de son processus.
-
Téthis
- Messages : 3895
- Géo : De passage chez les cathares
Après 15 années d’existence, le forum historique de Framasoft, ferme ses portes.
Pour les nostalgiques et les curieux, il reste toujours possible de consulter les discussions mais c’est maintenant le forum
Framacolibri qui prend la relève.
Si vous avez des questions, on se retrouve là-bas…
'initialisations des variables=================
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process")
Set WshNetwork = WScript.CreateObject("WScript.Network")
strUserDomain = WshNetwork.UserDomain
strUserComputer = WshNetwork.ComputerName
strUserName = WshNetwork.UserName
'boucles de parcour des processus=============
For Each objProcess in colProcessList
'je recupere le proprietaire du processus en cours
colProperties = objProcess.GetOwner(strProcessOwner,strProcessDomain)
'si moi (utilisateur connecté) et l'utilisateur du processus sont pareil, je rentre dans le if
if (strUserDomain = strProcessDomain) AND (strUserName = strProcessOwner) then
'verification pour que le repertoire du processus soit le même que celui du script (sous entendu de la clef usb)
if Left(WScript.ScriptFullName,3) = Left(objProcess.ExecutablePath,3) then
If objProcess.Terminate() <> 0 Then
WScript.Echo "L'application " & objProcess.Name & " n'a pas pu être fermé, merci de le faire à la main"
End If
end if
end if
Next
msgbox "Fermeture des applications de la clef usb fini"
prog = ""
nb = 0
'boucle tant que le fichier contient de slignes
Do While f.AtEndOfStream <> True
'lecture d'une ligne
TextLine = f.ReadLine
'je ne traite pas les lignes vide (saut de ligne)
if TextLine <> "" then
'je traite pas les lignes de catégorie [...]
if Left(TextLine,1) <> "[" then
'je recupere le nom du parametre, si c'est le parametre d'un prog, je l'enregistre
param = Split(TextLine, "=")
if Left(param(0),11) = "ExecuteProg" then
'j'ajoute tout les prog dans un string séparé par des virgules
prog = prog & param(1) & ","
nb = nb +1
end if
end if
end if
loop
'je split la prog en tableau
progs = Split(prog, ",")
for i=0 to nb-1
Wscript.Echo progs(i)
next
f.Close
Set f = Nothing
Téthis a écrit:N'y a-t-il pas moyen d'envoyer un message WM_CLOSE avec SendMessage() à la fenêtre que vous souhaitez fermer dans votre script NSIS ? Je ne connais pas du tout le language de script de l'installeur de nullsoft mais comme il y a moyen d'utiliser les API natives. Un mix avec FindWindow() devrait faire l'affaire.
Et puis WM_CLOSE est moins goret que de tuer violement la pauvre appli au travers de son processus.
Tuxmouraille a écrit:Pourquoi sa parenté: c'est à dire fermer un application installée sur l'ordinateur mais qui a été lancée par un lanceur installé sur la clé, et qui donc enregistre son profil utilisateur sur la clé.
GaeliX a écrit:Bonjour,
peut-être une solution :
http://www.codeproject.com/system/Remov ... Letter.asp
GaeliX
Tu trouveras ça sur la MSDN ou le Platform SDK.Tuxmouraille a écrit:@Téthis, tu sembles t'y connaitre pourrais tu me dire où je peux trouver les API Windows? Serait tu capable de programmer un plugin qui propose les fonctionnalités de closeprocess, kill, find et bien d'autres?
Désolé mais je ne sais pas faire par "parenté".Tuxmouraille a écrit:En claire, il faudrait un exécutable: binaire ou script ou un plugin qui permette de fermer, tuer, trouver une application en fonction de l'endroit où elle est installée ou bien de sa parenté.
Pourquoi sa parenté: c'est à dire fermer un application installée sur l'ordinateur mais qui a été lancée par un lanceur installé sur la clé, et qui donc enregistre son profil utilisateur sur la clé.
Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit