Bonjour,

Je cherche à réaliser un programme qui me permettrai de changer la diapositive d'une présentation LibreOffice Impress, même si le focus n'est pas dessus. Pour récupérer l'information clavier j'utilise PyHook. J'ai un bout de code qui fonctionne et me permet d'afficher que la barre d'espace est appuyée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
import pyHook, pythoncom
txt="La barre d'espace est appuyée!!!"
 
def OnKeyboardEvent(event):
    if event.KeyID==32:
        print(txt)
    return event.KeyID
 
hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()
L'autre partie, celle nécessaire à piloter Impress, j'ai également un code qui fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
import time
from win32com.client.dynamic import Dispatch
print('connexion au document impress')
objServiceManager = Dispatch('com.sun.star.ServiceManager')
Stardesktop = objServiceManager.CreateInstance('com.sun.star.frame.Desktop')
diaporama = Stardesktop.getCurrentComponent()
Pres = diaporama.Presentation
time.sleep(5)
print('démarrage du diaporama')
Pres.start()
time.sleep(2)
Pres.Controller.gotoSlideIndex(1)
Voilà où j'en suis et où je commence à bloquer. Dans l'idée, voici ce que je souhaiterai faire mais j'obtiens un message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import time
from win32com.client.dynamic import Dispatch
print('connexion au document impress')
objServiceManager = Dispatch('com.sun.star.ServiceManager')
Stardesktop = objServiceManager.CreateInstance('com.sun.star.frame.Desktop')
diaporama = Stardesktop.getCurrentComponent()
Pres = diaporama.Presentation
time.sleep(5)
print('démarrage du diaporama')
Pres.start()
time.sleep(2)
 
import pyHook, pythoncom
SlideNo=0
txt="La barre d'espace est appuyée!!!"
def OnKeyboardEvent(event):
    global SlideNo
    global Pres
    if event.KeyID==32:
        print(txt)
        SlideNo = SlideNo + 1
        Pres.Controller.gotoSlideIndex(SlideNo)
    return True
hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()
Merci d'avance à tous ceux qui me permettront d'avancer par quelques pistes que ce soit.