moi j'ai la solution bourrin ; je ferme tout !
mais par contre il faut connaitre le nom de l'application (ici avec Firefox)
pour connaitre le nom a fermer il faut allez dans le gestionaire des taches (Ctrl+Alt+Supr)
ici avec Firefox , ça marche
note que j'ai inclu la fermeture dans une boucle, pour vraiment fermer toutes les instances de firefox (meme celles deja ouvertes

)
ici je teste 10 fois, pour etre sur ...
d'ailleurs de type de code m'a servi des fois pour virer un virus tres collant !

pas le temps de naitre, que je le virai, ça me permetait d'allez dans la base de registre pendant ce temps
les procedures sont tiré d'une de mes librairies, qui me permettait de cheater certains jeux ...
un peut comme "CheatEngine" de maintenant
Code : Tout sélectionner
; ************* pour le PID *****************
Structure PROCESSENTRY33
dwSize.L
cntUsage.L
th32ProcessID.L
th32DefaultHeapID.L
th32ModuleID.L
cntThreads.L
th32ParentProcessID.L
pcPriClassBase.L
dwFlags.L
szExeFile.b[#MAX_PATH]
EndStructure
;**************************************
Declare.i getNamePID(ProcessName.s,*ptrPID)
Declare.L cheater_pid_return(gamewindowtext.s)
Declare cheater_KillProcess (pid)
URL_Aeroport$ = "https://www.geoportail.gouv.fr/donnees/carte-oaci-vfr"
RunProgram(URL_Aeroport$)
for i= 1 to 10
pid= cheater_pid_return("Firefox") ; mettre ici le nom du navigateur employé pour ouvrir l'adresse
debug Pid
cheater_KillProcess (pid)
next i
delay(2000)
ProcedureDLL.L cheater_pid_return(gamewindowtext.s)
; Laisse cette procedure au dessus des autres, car elle est appelé par les autres
Name.s=UCase(gamewindowtext.s)
Recherche=0
If OpenLibrary(0, "Kernel32.dll")
CreateToolhelpSnapshot = GetFunction(0, "CreateToolhelp32Snapshot")
ProcessFirst = GetFunction(0, "Process32First")
ProcessNext = GetFunction(0, "Process32Next")
If CreateToolhelpSnapshot And ProcessFirst And ProcessNext ; Ensure than all the functions are found
Process.PROCESSENTRY33\dwSize = SizeOf(PROCESSENTRY33)
Snapshot = CallFunctionFast(CreateToolhelpSnapshot, #TH32CS_SNAPPROCESS, 0)
If Snapshot
ProcessFound = CallFunctionFast(ProcessFirst, Snapshot, Process)
While ProcessFound
Nom.s=UCase(PeekS(@Process\szExeFile, -1, #PB_Ascii))
Nom=GetFilePart(Nom)
If FindString(Nom,Name.s,1);;=Name;If Nom=Name
Recherche =1
pid=Process\th32ProcessID
EndIf
ProcessFound = CallFunctionFast(ProcessNext, Snapshot, Process)
Wend
EndIf
CloseHandle_(Snapshot)
EndIf
CloseLibrary(0)
EndIf
ProcedureReturn pid
EndProcedure
ProcedureDLL cheater_KillProcess (pid)
;tue un process
#PROCESS_TERMINATE = $1
#PROCESS_CREATE_THREAD = $2
#PROCESS_VM_OPERATION = $8
#PROCESS_VM_READ = $10
#PROCESS_VM_WRITE = $20
#PROCESS_DUP_HANDLE = $40
#PROCESS_CREATE_PROCESS = $80
#PROCESS_SET_QUOTA = $100
#PROCESS_SET_INFORMATION = $200
#PROCESS_QUERY_INFORMATION = $400
#PROCESS_ALL_ACCESS = #STANDARD_RIGHTS_REQUIRED | #SYNCHRONIZE | $FFF
phandle = OpenProcess_ (#PROCESS_TERMINATE, #False, pid)
If phandle <> #Null
If TerminateProcess_ (phandle, 1)
result = #True
EndIf
CloseHandle_ (phandle)
EndIf
ProcedureReturn result
EndProcedure
la solution serai de recuperer tout les ID des instances de Firefox
puis de le mettres dans une liste , et ne retirer que les X PID de la fin de la liste (en principe les derniers ouvert )