ACF2020 spécial simulateurs de vol !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: ACF2020 spécial simulateurs de vol !

Message par Zorro »

Marc56 a écrit :@Zorro
tu peux aussi faire comme ça :
apres avoir mis le webgadget au normes (avec la procedure )
tu entres dans un RunProgram simplement l'URL , ça va lancer le navigateur par defaut de l'utilisateur !
Oui, mais pourquoi veux-tu modifier le WebGadget ? alors qu'il n'est pas utilisé. :?: :?: :?:

oui c'est une erreur de ma part LOL
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: ACF2020 spécial simulateurs de vol !

Message par Zorro »

PhM a écrit :Marc,
Je ne comprends pas bien ?
Qu'est-ce "URL_" ajouté à l'adresse apporte de plus dans cette affaire ? car je cherche d'abord le navigateur installé par défaut sur un PC.

Zorro,
Ton code me parait intéressant, j'étudie cela !

"URL_trucmuche est une variable , rien de plus

si tu utilise RUNPROGRAM("ADRESSEURL") tu n'a pas a te préoccuper du navigateur !!

ça va lancer celui par defaut qui est installé sur l'ordi de la personne
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: ACF2020 spécial simulateurs de vol !

Message par PhM »

J'ai besoin de se renseignement car, quand je quitte le programme, je souhaite fermer également le navigateur par défaut utilisé !

KillProgram(ID)
CloseProgram(ID)
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: ACF2020 spécial simulateurs de vol !

Message par Marc56 »

PhM a écrit :J'ai besoin de se renseignement car, quand je quitte le programme, je souhaite fermer le navigateur par défaut utilisé !
KillProgram(ID)
CloseProgram(ID)
Ah, OK, d'accord.

Cela dit ça peut poser un problème si le navigateur est déjà ouvert sur d'autres pages. C'est sans doute pour cela qu'il ne peut être fermé par KillProgram s'il est déjà ouvert et que les nouvelles url viennent dans d'autres onglets.

Il faudrait forcer l'ouverture des 2 url dans une nouvelle instance (et non pas dans de nouveaux onglets). C'est normalement possible avec un paramètre, mais ne fonctionne pas toujours.

Il existe peut-être un moyen de fermer un onglet (ou fenêtre) par son URL. À voir dans la doc des différents navigateurs.
Windows est capable d’identifier tous les onglets d'un navigateur (On le voit en ciblant avec AutoIt info)

:wink:
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: ACF2020 spécial simulateurs de vol !

Message par Zorro »

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 :lol:

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 )
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: ACF2020 spécial simulateurs de vol !

Message par Marc56 »

Zorro a écrit :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 ...
Alors tu peux faire ça en une seule ligne:

Code : Tout sélectionner

RunProgram("taskkill", "/im firefox.exe", "")
« La maison ne fait pas de détail » :mrgreen:
Dernière modification par Marc56 le mer. 08/janv./2020 11:58, modifié 1 fois.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: ACF2020 spécial simulateurs de vol !

Message par Zorro »

ha tiens c'est bon a savoir ça :)
Merci

mais moi je peux eventuellement grace a la liste des PID , ne fermer que les bonnes instances :)
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: ACF2020 spécial simulateurs de vol !

Message par PhM »

Code : Tout sélectionner

RunProgram("taskkill", "/im firefox.exe", "")
Très efficace méthode, mais cela revient donc à connaitre, d'abord, le navigateur qui a été ouvert !

Je prépare une version ouvrant le navigateur par défaut et donc, sans la fermeture des fenêtres ouvertes du navigateur. Cela facilite grandement la chose...

Par curiosité, d'ou sort ce "taskkill" ???
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: ACF2020 spécial simulateurs de vol !

Message par Zorro »

une commande du Shell ?
(commande qu'on tape dans la console windows)
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: ACF2020 spécial simulateurs de vol !

Message par PhM »

Voici la toute dernière version (0.9.2) qui prends en charge le navigateur par défaut sans refermer celui-ci lorsque l'on quitte le programme.
https://mijon.pagesperso-orange.fr/Pure ... CF2020.zip
Cela améliore-t-il les choses chez vous :?:
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: ACF2020 spécial simulateurs de vol !

Message par Marc56 »

Par curiosité, d'ou sort ce "taskkill" ???
Des outils systèmes en ligne de commande (présents dans %Windir%\System32). Autrefois fournis sous forme de 'Ressource kit' avec les version serveur de Windows, maintenant présent sur toutes les versions depuis Windows XP.
Taskkill a son binôme Tasklist qui sert à lister.

Ils sont appelés aussi 'Commandes Externes' car ce sont des programmes autonomes contrairement aux 'Commandes Internes' qui sont les commandes intégrées au shell (shell = interpréteur de commandes: cmd.exe pour Windows NT et command.com pour Windows 9x et DOS). 'Copy' est par exemple une commande interne alors qu 'Xcopy(.exe) est une commande externe

PS. Ton lien ne fonctionne pas. Les ... sont écrits et interprétés tels quel.
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: ACF2020 spécial simulateurs de vol !

Message par PhM »

PhM a écrit :Voici la toute dernière version (0.9.2) qui prends en charge le navigateur par défaut sans refermer celui-ci lorsque l'on quitte le programme.
https://mijon.pagesperso-orange.fr/Pure ... CF2020.zip
Cela améliore-t-il les choses chez vous :?:
C'est rectifié :lol:
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: ACF2020 spécial simulateurs de vol !

Message par Marc56 »

Ça fonctionne :wink:

Reste à faire un IncludeBinary pour mettre aussi l'image de couverture dans l'EXE
Avatar de l’utilisateur
PhM
Messages : 118
Inscription : dim. 08/déc./2019 10:50

Re: ACF2020 spécial simulateurs de vol !

Message par PhM »

Ça fonctionne OUF !
Reste à faire un IncludeBinary pour mettre aussi l'image de couverture dans l'EXE
Justement, je me demandais si cela était possible...
Je me remets donc au travail pour filer vers la version 1.0 :P
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: ACF2020 spécial simulateurs de vol !

Message par Marc56 »

PhM a écrit :
Reste à faire un IncludeBinary pour mettre aussi l'image de couverture dans l'EXE
Justement, je me demandais si cela était possible...
Exemple en supposant que le fichier image soit dans le même répertoire que le .pb au moment de la compilation, sinon il suffit de mettre le chemin

Code : Tout sélectionner

EnableExplicit

Enumeration 
    #Win
    #Img
EndEnumeration

UsePNGImageDecoder()
CatchImage(#Img, ?Img_Book)

OpenWindow(#Win, 100, 100, 300, 300, "", #PB_Window_SystemMenu)
ImageGadget(#Img, 10, 10, 280, 280, ImageID(#Img))

Repeat 
    Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
            End 
    EndSelect
ForEver

End

DataSection
    Img_Book:
    IncludeBinary "vac2.png"
EndDataSection
Ne pas oublier UsePNGImageDecoder() s'il n'est pas déjà présent, car sinon le message d'erreur ne l'indique pas (il indique alors Image non initialisée)

:wink:
Répondre