salut
j'ai un problème très bizarre avec GetPidProcess() (droopy lib).
Lorsque je l'utilise avec un petit fichier (genre 300 lignes), tout va bien, mais sur un autre fichier beaucoup plus conséquent, ça plante.
de plus, rien n'est indiqué dans le debugger pour savoir ce qui pose problème.
Y'a t-il des problèmes connus avec GetPidProcess() et des gros fichiers ?
Sinon, existe-til le même genre de fonctions directement en purebasic ?
En gros, j'aimerai savoir si un exe a été lancé (update.exe en l'occurance, pour savoir si on a fait un update avant de lancer le jeu).
Je cherche donc l'équivalent de :
GetPidProcess() et
killprocess()
en pb.
A moins que vous ne sachiez si ce genre de fonctions pose problème avec des gros fichiers.
[erreur] GetPidProcess()
[erreur] GetPidProcess()
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [erreur] GetPidProcess()
EnumWindows_ énumère toutes les fenêtres principales de windows. Il faut utiliser une fonction de rappel (callback) pour pouvoir récupérer les valeurs.
GetWindowText_ renvoie le texte associé à une fenêtre ou à un contrôle.
Un petit code que tu compilera et que tu lanceras deux fois pour voir le résultat.
GetWindowText_ renvoie le texte associé à une fenêtre ou à un contrôle.
Un petit code que tu compilera et que tu lanceras deux fois pour voir le résultat.
Code : Tout sélectionner
Enumeration
#MainForm
EndEnumeration
;L'application est elle lancée
Procedure.l IsRun(WindowHandle.l, lParam.l)
Protected ApplicationListe.s
ApplicationListe = Space(200)
;Debug WindowHandle pour voir la liste de tous les handle
;Debug WindowHandle
;Ici on recupere le titre de chaque fenetre depuis la liste des handles
GetWindowText_(WindowHandle, @ApplicationListe, 200)
;Debug ApplicationListe pour voir le resultat
;Debug ApplicationListe
;Enfin on cherche si notre fenetre fait partie de la liste
If FindString(ApplicationListe, "Test", 1) <> 0
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
;Fenetre principale
Procedure MainFormShow()
OpenWindow(#MainForm,0,0,400,300,"Test",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
EndProcedure
If EnumWindows_(@IsRun(), #False)
MainFormShow()
Else
MessageRequester("Information","L'application est déja active")
End
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Dernière modification par falsam le lun. 18/avr./2011 14:25, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [erreur] GetPidProcess()
Patrick88 : merci, j'ai trouvé des liens très intéressant, notamment la nouvelle version de la droopy lib 
falsam :Merci pour ton exemple, c'est intéressant. J'ai regardé les lignes debuger, pour mieux voir.
Par contre, à chaque fois que je lance l'application (compilée) ça me met le message "L'application est déja active", que je la lance une fois, deux fois ou plus...

falsam :Merci pour ton exemple, c'est intéressant. J'ai regardé les lignes debuger, pour mieux voir.
Par contre, à chaque fois que je lance l'application (compilée) ça me met le message "L'application est déja active", que je la lance une fois, deux fois ou plus...
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [erreur] GetPidProcess()
Pas chez moi, sauf si l'application est déjà lancé. Vérifie bien que ton application ne tourne pas déjà en tache de fond.
PS : Quel est ton System d'exploitation ?
PS : Quel est ton System d'exploitation ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [erreur] GetPidProcess()
je suis sous xp, j'ai testé avec pb4.60beta2, je vais tester avec pb 4.51falsam a écrit :Pas chez moi, sauf si l'application est déjà lancé. Vérifie bien que ton application ne tourne pas déjà en tache de fond.
PS : Quel est ton System d'exploitation ?
L'application n'était pas lancée en tâche de fond

EDIT : bon, ben meme résultat avec pb 4.51

http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english