|
-
June 12th, 2009, 02:27 PM
#1
Simultaneous PowerPoints on a vb form
I wrote an application that has 3 frames on it. Frame 1 shows a powerpoint show, Frame2 pulls data from a database and loads it into labels, Frame3 pulls a second powerpoint. Each frame is displayed on a separate monitor.
The problem I am having is controlling the slide transitions of powerpoint. If the slide show, with multiple slides, loops and transitions from slide to slide, ONLY the slideshow that had focus last will transition. If I click on the first slide show, then it will transition and the previous show stops transitioning. Can anyone suggest a method to make both shows transition simultaneously?
Here's some quick and nasty code that does 2 powerpoints like i do in my project. Obviously the .AdvanceTime = 0.000015 will make each slide scream by but that's not the point. The point is, I'm stuck and need help. A quick solution I used was to publish the powerpoint as a flash, the insert the flash back into a single slide. Then, the new problem is that no matter what settings are set in powerpoint of flash timing, the slides transition at 8 seconds. If anyone is interested here is the freeware to publish powerpoint into flash.
http://www.ispringsolutions.com/free...converter.html
I'm not endorsing the above, it was a temporary solution. Now I need your help.
'In a module
Option Explicit
Const APP_NAME = "PowerPoint in VB window"
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Public screenClasshWnd As Long
Public oPPTApp1 As PowerPoint.Application
Public oPPTPres1 As PowerPoint.Presentation
Public oPPTPres2 As PowerPoint.Presentation
Sub main()
Form2.Show
End Sub
'In the form
Option Explicit
Private iIndex As Integer
Private Sub Form_Load()
Dim lleft As Single
Dim ttop As Single
Dim wwidth As Single
Dim hheight As Single
lleft = 0
ttop = 0
wwidth = 512 * 15
hheight = 768 * 15
GetPPTs
Me.Move lleft, ttop, wwidth, hheight
End Sub
Private Sub GetPPTs()
Dim numOfSlides As Integer
Dim i As Integer
Set oPPTApp1 = New Application
If Not oPPTApp1 Is Nothing Then
Set oPPTPres1 = oPPTApp1.Presentations.Open("C:\Temp\Visual Board.ppt", True, , False)
With oPPTPres1
.SlideShowSettings.Run
screenClasshWnd = FindWindow("screenClass", 0&)
SetParent screenClasshWnd, frmSS1.hwnd
numOfSlides = .Slides.Count
For i = 1 To numOfSlides
.Slides.Range.SlideShowTransition.AdvanceOnTime = True
.Slides.Range.SlideShowTransition.AdvanceTime = 0.000015
.SlideShowSettings.Run
Next i
End With
End If
If Not oPPTApp1 Is Nothing Then
Set oPPTPres2 = oPPTApp1.Presentations.Open("C:\Temp\Visual Board.ppt", True, , False)
With oPPTPres2
.SlideShowSettings.Run
screenClasshWnd = FindWindow("screenClass", 0&)
SetParent screenClasshWnd, frmSS1.hwnd
numOfSlides = .Slides.Count
For i = 1 To numOfSlides
.Slides.Range.SlideShowTransition.AdvanceOnTime = True
.Slides.Range.SlideShowTransition.AdvanceTime = 0.000015
.SlideShowSettings.Run
Next i
End With
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If Not oPPTPres1 Is Nothing Then
Set oPPTPres1 = Nothing
End If
If Not oPPTApp1 Is Nothing Then
oPPTApp1.Quit
Set oPPTApp1 = Nothing
End If
End Sub
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|