attendre lancement complet autre programme avant continuer

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

attendre lancement complet autre programme avant continuer

Message 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
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message 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
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Message 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....
Dernière modification par Mindphazer le mar. 16/oct./2007 11:29, modifié 1 fois.
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message 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
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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
Denis

Bonne Jounée à tous
Répondre