2010-06-18 22 views
0

J'ai une application C# qui fonctionne sur un ordinateur connecté à un grand écran dans notre cafétéria. L'application extrait tous les fichiers PowerPoint d'un dossier et les exécute sous forme de diaporama en continu. Tout fonctionnait bien jusqu'à ce que quelqu'un décide d'insérer un clip sur une diapositive. Le problème est que le film ne démarre jamais. Si vous ouvrez la présentation dans PowerPoint et lancez l'émission, cela fonctionne, et si je fais un clic droit sur la présentation et que je clique sur "montrer" cela fonctionne. Voici le code que j'utilise pour ouvrir la présentation et lancer le diaporama.PowerPoint SlideShowSettings.Run() ne lance pas de vidéo intégrée

pres = app.Presentations.Open(pptPath, MsoTriState.msoTrue, MsoTriState.msoTrue, MMsoTriState.msoFals); 
pres.SlideShowSettings.Run(); 

Y at-il autre chose que je dois mettre pour obtenir la méthode Run() pour commencer aussi des films?

Édition: La présentation en question ne comportait qu'une diapositive contenant le film. Si j'ai ajouté une autre diapositive, cela a bien fonctionné. Également essayé d'ajouter une diapositive avant et a eu le même problème, donc apparemment le problème existe seulement pour la dernière diapositive de la présentation.

Répondre

-2

a trouvé le problème. J'avais une instruction thread.sleep dans le gestionnaire d'événementsde la présentation qui traitait la fin d'un diaporama et commençait le suivant. Je ne pensais pas à l'époque et ce code fonctionnait dans le même fil au diaporama lui-même. J'ai créé un objet timer à la place et ai déplacé le code nécessaire dans le gestionnaire d'événements elapsed du temporisateur.

+0

-1. Vous n'avez pas mentionné que vous aviez du code dans 'SlideShowNextSlide'. –

1

Le problème principal ici est que les animations PowerPoint (vidéo, audio, trajectoires de mouvement personnalisées, etc.) ne seront lues que lorsque le SlideShowWindow aura le focus. Cela signifie que lorsque vous exécutez votre application et que vous lancez PPT, votre application conserve le focus et les animations ne s'exécutent pas (cela ne vous empêche pas de manipuler manuellement votre deck en cours d'exécution).

Il y a deux façons de contourner cela:

  1. Vous pouvez appeler l'API SetWindow pour apporter votre SlideShowWindow au avant. Pas un bon moyen de le faire en mon avis.
  2. Le moyen le plus simple est simplement d'enregistrer votre .ppt/.pptx à un .pps/.ppsx (présentation PowerPoint). Avec cela, vous pouvez utiliser votre même code pour l'exécuter et il va lancer et prendre le focus automatiquement (et vos animations [vidéo, et al) se déroulera comme vous l'avez prévu).
+0

Il est déjà configuré pour jouer automatiquement. Si je lance le diaporama manuellement tout fonctionne. J'ai seulement un problème quand je cours le diaporama en utilisant le code dans la question et le film est sur la dernière diapositive de la présentation. – AdmSteck

+0

@AdmSteck. Ok, compris. J'ai de bonnes nouvelles et de mauvaises nouvelles pour vous. La réponse a été mise à jour. –