RunProgram et Screen [4.10b2]

Archive.
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

RunProgram et Screen [4.10b2]

Message par Thyphoon »

Bonjour,

Je suis en train de faire un Frontend, et j'utilise RunProgram() pour lancer des applications.
Mais je ne comprends pas pourquoi apres avoir lancer une autre application quand je reviens a mon Frontend ça plante....
J'ai simplifié le code appuyer sur Espace pour lancer l'application. Et modifier la ligne du programme a lancer pour une application qui s'ouvre en plein ecran

Code : Tout sélectionner

;initialisation des différents composant
If InitSprite() = 0 Or InitSprite3D() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
  MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
  End
EndIf

Global FullScreen=#True
Procedure OpenMyScreen()
  If FullScreen=0
      OpenWindow(0, 0, 0, 800,600,"PureArcade 4." + Str(#PB_Editor_BuildCount)+"."+Str(#PB_Editor_CompileCount)+".",#PB_Window_TitleBar | #PB_Window_ScreenCentered)
      OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
  Else
      OpenScreen( 800, 600, 32, "PureArcade 4." + Str(#PB_Editor_BuildCount)+"."+Str(#PB_Editor_CompileCount)+".")
  EndIf
  
  UsePNGImageDecoder()
  UseJPEGImageDecoder()
  TransparentSpriteColor(-1, RGB(255,0,255))
 
EndProcedure

OpenMyScreen()

Repeat
 If FullScreen=#False:WindowEvent():Delay(10):EndIf 
  
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Space) And waitkey<ElapsedMilliseconds() 
    Debug"Run"
    ;Modifier ici pour mettre un programme qui s'ouvre un plein ecran ...
    RunProgram("mamep4.exe"," 1942","E:\Logiciels\MAME",#PB_Program_Wait )  
    Debug"End"
    waitkey=ElapsedMilliseconds()+400
  EndIf
  
  ClearScreen(RGB(0,255,0))



  UseBuffer(#PB_Default)

  StartDrawing(ScreenOutput())
  DrawText(0,20,"coucou")
  StopDrawing()
  FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

apparemment je passionne pas les foules.
Autre chose étonnante le comportement de Runprogramm change en fonction de si je suis en full screen ou bien un screen dans une fenêtre :(
Si quelqu'un pouvait m'expliquer pourquoi ... j'avoue que je tourne en rond...

Code : Tout sélectionner

Global FullScreen=#False
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Enlève ton débogueur pour voir :o
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci de m'avoir répondu
j'ai essayer mais c'est pas beaucoup mieux :(

Apparemment il y a des gros bugs sur la gestion des screens dans Purebasic...et il y a des trucs tres currieux dans l'utilisation de RunProgram... décevant ..
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

ça demande à être approfondi tes hypothèses. Je ne te juge pas, je n'ai rien fait encore avec RunProgram. Disons que ça demande à être précisé (qu'est-ce qui va et qu'est-ce qui va pas)

>>Fait un prog exécutable "exécuteur" qui exécute tout le temps TEST.EXE
Et expérimente le code du fichier exécuté TEST.EXE. Pars d'un simple messageRequester() puis ajoute les commandes peu à peu, test après test, pour voir ce qu'il digère et ce qu'il ne digère pas.

>>As-tu réellement besoin d'un plein écran en arrière-plan quand tu exécutes tes EXE?
Non?>>CloseScreen():Delay(500) avant RunProgram()
Oui? >> Est-ce que c'est animé en arrière-plan?
--- Non? Image fixe: Pas de WindowScreen(), tu vire temporairement les icônes du bureau et la barre des tâches et tu fous ton image de fond en arrière-plan.
--- Oui? Perds pas espoir! Fais des tests! Une chose qui est sûre, l'accès direct à la mémoire fonctionne nickel sur les Window, les WindowScreen et les FullScreen donc ce n'est pas si tordu que ça, au contraire ça me semble bien carré. Maintenant si tu cherches la fusion totale d'affichage en plein écran avec plusieurs EXE, là tu es très exigeant! Mais je peux t'assurer sans l'avoir testé que c'est possible.
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

@ollivier

Tu as raison je m'emporte un peu ... disons que c'est vieux bug que je pensais corriger... j'en parlais déjà en 2004
http://www.purebasic.fr/french/viewtopi ... ght=screen
et un autre topic en parle aussi ici
http://www.purebasic.fr/french/viewtopi ... ght=screen

Je peux toujours contourner le problème c'est ce que je faisais et ce que je refais. je ferme l'ecran et je le réouvre aprait. Mais bon le but était d'afficher une image pour faire patienter durant le lancement de l'application qui peut prendre 10 a 20 sec sur certaine machine...
Bef en contournant le problème ça marche tres bien. mais si on veut garder un screen ça bug, et le comportement est différent si c'est un fullscreen ou si c'est un screen dans une fenêtre.

En tout cas je te remercie de t'être penché sur mon souci :P ton analyse est la bonne. J'ai fais la même :wink: Mon seul truc c'est comment font les autres programme du style Frontend qui mettent une jolie image (sans utiliser le bureau..qui est une bidouille) durant le chargement...
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Et bien si tu veux imiter ce type de page d'attente, tu peux peut-être le faire (uniquement en version 4.10 beta) en créant une fenêtre sans bordure de la taille de ton DeskTop :
http://www.purebasic.fr/french/viewtopi ... highlight=
Donne-moi en des nouvelles.
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Ollivier a écrit :Et bien si tu veux imiter ce type de page d'attente, tu peux peut-être le faire (uniquement en version 4.10 beta) en créant une fenêtre sans bordure de la taille de ton DeskTop :
http://www.purebasic.fr/french/viewtopi ... highlight=
Donne-moi en des nouvelles.
Oui j'avais vu ta proposition dans ce topic. c'est d'ailleur une tres bonne idée...mais a partir du moment ou il y a un screen d'ouvert que ça soit en fullscreen ou bien dans une fenêtre ça bug :P
quoi que en ecrivant ça...faut voir si en utiliisant la fonction drawimage...comme ça pas besoin d'ouvrir de screen... a étudier.
Merci pour ton coup de main.
Répondre