Page 1 sur 1

attendre lancement complet autre programme avant continuer

Publié : mar. 16/oct./2007 6:28
par david
j'utilise:

Code : Tout sélectionner

RunProgram("excel.exe",nomfichier$,"")
pour ouvrir excel et charger une feuille excel.

ensuite je souhaite faire d'autres choses, mais mon pb c'est que le temps nécessaire pour ouvrir excel n'est pas le même d'un ordinateur à un autre, depend également dela version....

comment faire une ouverture "synchronisée" pour que je continue mon programme seulement quand excel est bel et bien ouvert?

pour l'instant j'utilise

Code : Tout sélectionner

delay(x)
mais je ne connais pas a l'avance quel sera le temps d'attente...

y a pas un truc simple comme avec le:

Code : Tout sélectionner

If ReadFile(0, FicParam$)
While Eof(0) = 0
    nom1$= ReadString(0) ;
    nom2$= ReadString(0);
    nom3$= ReadString(0)
   Wend
  CloseFile(0)
la au moins tu sais que le fichier est chargé (et meme qu'il ya un pb de chargement le cas échéant..)

Bon bah, si quelqu'un a une idée ..

Merci d'avance

Publié : mar. 16/oct./2007 8:19
par Cls
Va voir du coté des paramètres de RunProgram(). Tu dois pouvoir positionner un flag #Pb_Program_Wait ou un truc dans le genre. Il te permet d'attendre la fin de l'éxécution de ton programe avant de continuer. Je n'ai pas la doc sous les yeux donc je ne peux pas te filer plus d'infos...

Cordialement,
Cls

Publié : mar. 16/oct./2007 8:28
par Mindphazer
Tu peux ajouter un paramètre dans ton RunProgram :
RunProgram("excel.exe",nomfichier$,"",1)
Le 1 spécifie à PB qu'il faut attendre que le programme lancé se termine avant de continuer.
Par contre, si j'ai bien compris ce que tu demandes, tu veux attendre que Excel soit lancé pour continuer. Là, ça ne fonctionnera pas, et je ne suis pas sûr que ce soit -facilement- implémentable....

Publié : mar. 16/oct./2007 11:21
par case
je n'ai pas excel mais il est peut etre possible de verrifier le nom des fenetres ouvertes dans le systeme ? et voir si l'une d'elle est celle d'excel?

et si excel affiche le nom du fichier ouvert dans son nom de fenetre ca serais encore mieux ... enfin peut etre une piste mais je suis pas sur que ce soit faisable

Publié : jeu. 18/oct./2007 8:30
par brossden
Peut être une solution avec ce Code

La librarie PBOSL est nécessaire pour ce bout de code

Windows :

http://pbosl.purearea.net/pbosl_win.zip

ou

Unix:

http://pbosl.purearea.net/pbosl_lin.tar.gz

Code : Tout sélectionner

Global Compte

Procedure CPU()
  Pourcent = CpuUsage()
  If Pourcent < 5
    Compte +1
  EndIf
  If Compte > 2
    EndTimer(1)
    MessageRequester("Information","Application Chargée")
  EndIf
EndProcedure


Procedure Open_Window_0()
  If OpenWindow(0, 100, 100, 120, 70, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(0))
      ButtonGadget(5, 10, 20, 100, 30, "Lancer Excel")
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat 
  Event = WaitWindowEvent() 
  GadgetID = EventGadget() 
  If Event = #PB_Event_Gadget
    If GadgetID = 5
      RunProgram("excel.exe")
      StartTimer(1,150,@CPU())
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End