Page 1 sur 1
[R] Interaction avec pps
Posté : ven. 01 oct. 2010 13:55
par cutprod
Bonjour,à tous.
Voila j'ai essayer de me débrouiller seul mais faut croire que " chaqu' un son métier " c'est un peu trop chaud pour moi!
Je voudrais faire tourner un pps sur un écran tv de demo toute la journée, dans ce pps je dois faire agir la souris dans certaine diapos. Je n'aimerais pas devoir jouer avec des tempos, car à la fin de la journée de légers écarts de timing se transformeraient en bug complet...
J'aie recherché donc le moyen pour Autoit de savoir quelle diapo (slide n°) est active a l'écran, pour déclancher des actions.
J'ai poster ma question sur "aide générale" un gentil copain ma orienter sur cet
UDF . Qui semble pouvoir convenir.
Mais je bloque , j'ai du mal...
Donc je demande si une bonne âme charitable pourrait me faire un petit script qui tourne en même temps qu'un pps (en boucle) et qui, à chaque fois que la diapo numéro 3 est active a l'écran, fait apparaitre une MsgBox avec le texte "c'est la diapo 3!!" et moi je pourrais me le retravailler pour l'adapter à mon projet.
Voila je suis a votre dispo et en standby (mais je continu a faire des tests de mon coté!).Merci
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 15:22
par SrBelial
alors j'ai pas powerpoint sous la main donc je peux pas tester, mais est ce qu'il y a pas un moyen dans un pps pour faire en sorte qu'à chaque diapo la fenêtre powerpoint change de titre (et par exemple prenne le titre de la diapo pour titre) ?
je sais bien que de toute façon en fullscreen on s'en f**t du titre de la fenêtre, mais c'est que de cette façon tu pourrais fonctionner en faisant des tests pour savoir si une fenêtre avec le nom prévu est active ou non ...
en espérant que ce soit une bonne piste et non un cul-de-sac ...
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 15:29
par cutprod
Merci pour ton aide!
Quand tu dis " a chaque diapos la fenêtre powerpoint change de titre" tu veux dire quelle fenêtre ?
Parce que le soft "Powerpoint" est fermé pendant l'exécution du pps.
Je ne fais que lancer un pps qui se trouve dans un dossier quelconque.
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 16:00
par cutprod
Ok j'ai essayer avec "AutoIt Window Info" mais aucun changement dans la catégorie window le titre reste le même quelque soit la diapo.
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 17:17
par SrBelial
ok bah mauvaise piste alors ^__^
éventuellement ce que je ferais moi c'est de caler dans un coin de l'écran un petit carré d'une couleur donnée, et différente à chaque slide,
et comme ça en connaissant les coordonnées de ce petit carré, tu teste si la couleur d'un pixel de ce carré correspond à une des valeurs que tu as réglé dans ton script ...
exemple : slide 1: petit carré vert en haut à droite, slide 2 : petit carré rouge en haut à droite, slide 3 : petit carré bleu en haut à droite ...
et tant que ton petit carré est pas de la bonne couleur tu sais que t'es pas sur le slide que tu veux ....
c'est pas très propre comme solution, sinon il ne reste que la possibilité de ne pas timer ton powerpoint .....
c'est à dire qu'il ne doit pas se dérouler automatiquement, et c'est le script qui swappe d'un slide à l'autre, avec un MouseClick() ou un Send() du clavier ... ça te permet de controler entièrement depuis ton script tout ce qui se passe sur ton slide, et du coup tu sais de façon très précise si tu es à tel ou tel slide, mais également depuis combien de temps tu y es ....
perso c'est cette solution que je choisirais !
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 17:41
par cutprod
Ha ouai!! pas mal la solution de contrôler le timing des diapos depuis le script!!
Ça me donne la main sur tous le déroulement du pps.
Je te remercie beaucoup je vais essayer de mettre ca en œuvre.
Je te tiens au courant.
Au fait avec la fonction slidecount de l'UDF en question, on ne peut rien faire?
Code : Tout sélectionner
Func _PPT_SlideCount($obj)
If IsObj($obj) <> 1 Then
SetError(1)
Return 0
Else
Return $obj.Slides.Count
Endif
EndFunc
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 17:52
par Jerome
Coucou,
j'allais justement tester un peu l'UDF pour voir ce que sa pouvait t'apporter.
Je suis entrain d'installer PowerPoint 2007 la.
Donc je vais test tout sa, je te tient au courant.
Jérôme
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 18:22
par Jerome
Re-Coucou,
Essaye ceci :
Code : Tout sélectionner
#include <Powerpoint.au3>
$objPPT = _PPT_PowerPointApp()
$objPPT = _PPT_PresentationOpen($objPPT, "C:\Users\Jerome\Desktop\lol.ppt")
WinWaitActive("Microsoft PowerPoint - ")
_PPT_SlideShowRun($objPPT) ; lance le diapo
$objPPT.SlideShowWindow.View.GoToSlide(3) ; va au diapo numero 3 (Enjoy pour passer tes diapo :) )
Quelques autres lignes utiles
ici.
Jérôme
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 18:27
par cutprod
Salut a toi , j'essaye de suite!!
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 18:50
par cutprod
Marche pas chez moi!! le soft powerpoint se lance mais bloque ! le pps ne se lance pas!!
tu as tester avec powerpoint 2007 je suis avec 2003, tu crois que ca a une incidence ? je peux passer au 2007 je l'ai par quelque par là...
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 19:01
par Jerome
Coucou,
Oui si tu peux test avec 2007., même si mon pps était au format 2003.
Fait des test, pour moi sa fonctionne.
Sa lance le pps et sa m'amene sur le slide que je choisit (en l'occurrence ici "3")
Edit : en faite c'est moi qui suis trop fort, utilise le fichier au format ppt ...
Je l'ai fait avec le ppt, sa lance d'abord microsoft power point puis sa met en route le diapo ....
lol ^^"
Dans le cas d'un pps, il suffit de mettre :
Code : Tout sélectionner
#include <Powerpoint.au3>
$objPPT = _PPT_PowerPointApp()
$objPPT = _PPT_PresentationOpen($objPPT, "C:\Users\Jerome\Desktop\lol.pps")
sleep(2000)
$objPPT.SlideShowWindow.View.GoToSlide(3)
Jérôme
Re: [..] Interaction avec pps
Posté : ven. 01 oct. 2010 19:19
par cutprod
Pardon ca fonction très bien, j'ai changer le chemin, je l'ai directement dans C:\ et ca tourne!!
Je devais me tromper dans la syntaxe du chemin!! trop nul!!
J'approfondis le truc et je te tiens au jus!!
Merci beaucoup!!

Re: [..] Interaction avec pps
Posté : sam. 02 oct. 2010 20:34
par cutprod
Bien voila je suis parvenu (avec l'aide de Jérôme sur le forum, et mon beau frère Julien) a faire un petit script.
Ce n'est que le début de mon appli finale mais cela resume assez bien sa vocation.
Je vous le met pour avoir vos critiques et si ca peut resservir a quelqu'un...
Encore merci au forum!!
Code : Tout sélectionner
#include <Powerpoint.au3>
Global $objPPT = _PPT_PowerPointApp()
Global $objPPS = _PPT_PresentationOpen($objPPT, "C:\Users\AL\Desktop\1.pps")
While 1
if $objPPS.SlideShowWindow.view.Slide.Name = "slide3" Then ;si la diapo 3 est active alors
graph ();appel la fonction
Sleep(5000) ;attend x millisecondes que la diapo passe
close ()
EndIf
WEnd
func graph ()
Sleep(1500);attend x millisecondes que le webbrowser s'affiche bien
MouseClick("left", 200, 200, 1, 1) ;on bouge et click sur le graph pour le mettre en plein ecran
MouseMove(0,1023,1) ;cache la souris
EndFunc
Func close ()
_PPT_PresentationClose($objPPS) ; ferme la presentation
_PPT_PowerPointQuit ($objPPT);Exit PowerPoint
EndFunc