Mit VB Tastatureingabe programmieren
Kann ich mit VB eine Tastatureingabe simulieren?
Hallo zusammen. Ich habe folgendes problem:
Wir haben von Elo Touch Touchscreenmonitore für ein Kunde gekauft. Der lässt jetzt dort eine PowerPoint 2003 laufen. Jetzt ist das problem, dass bei PP03 der Mauszeiger nach drei Sekunden inaktiv wird und man muss dann immer zwei mal auf den Touchscreen klicken, damit es weiter geht. So weit so gut, das Problem habe ich eigentlich gelöst, in dem man während der Präsentation auf
Rechtsklick | Zeigeroptionen | Pfeiloptionen | Sichtbar
klickt und dann ist der Pfeil immer sichtbar. Nur das Problem ist jetzt, dass es Microsoft nicht fertig bringt, diese Einstellung zu fixieren, sprich der Kunde muss dies immer bei jedem Start einstellen und er hat ja keine Tastatur. Jetzt meine Frage: Kann ich mit VB folgende Tastatur kürzel simulieren?
Rechtsklick | Alt + E | Alt + O | Alt + S
und diese Eingabe dann beim Start von PP03 auf ein Button legen, damit er das Script beim Drücken des Buttons ausführt?
Danke für eure Hilfe!!!
Hallo zusammen. Ich habe folgendes problem:
Wir haben von Elo Touch Touchscreenmonitore für ein Kunde gekauft. Der lässt jetzt dort eine PowerPoint 2003 laufen. Jetzt ist das problem, dass bei PP03 der Mauszeiger nach drei Sekunden inaktiv wird und man muss dann immer zwei mal auf den Touchscreen klicken, damit es weiter geht. So weit so gut, das Problem habe ich eigentlich gelöst, in dem man während der Präsentation auf
Rechtsklick | Zeigeroptionen | Pfeiloptionen | Sichtbar
klickt und dann ist der Pfeil immer sichtbar. Nur das Problem ist jetzt, dass es Microsoft nicht fertig bringt, diese Einstellung zu fixieren, sprich der Kunde muss dies immer bei jedem Start einstellen und er hat ja keine Tastatur. Jetzt meine Frage: Kann ich mit VB folgende Tastatur kürzel simulieren?
Rechtsklick | Alt + E | Alt + O | Alt + S
und diese Eingabe dann beim Start von PP03 auf ein Button legen, damit er das Script beim Drücken des Buttons ausführt?
Danke für eure Hilfe!!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 59338
Url: https://administrator.de/contentid/59338
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo thedani!
PowerPoint ist zwar weniger meine Baustelle, aber versuch es einmal mit folgender Code-Zeile:
Platziere den Code in einem Modul, erstelle auf der ersten Folie zB ein Rechteck mit 100 % Transparenz und ohne Rahmen und ordne dessen "Aktionseinstellungen..." über "Makro ausführen:" obiges Sub zu. Durch einen Klick auf das (unsichtbare) Rechteck wird der Code gestartet.
Grüße
bastla
PowerPoint ist zwar weniger meine Baustelle, aber versuch es einmal mit folgender Code-Zeile:
Sub PfeilSichtbar()
SlideShowWindows(1).View.PointerType = ppSlideShowPointerArrow
End Sub
Grüße
bastla
Hi!
[edit] Mannomann, war ich kompliziert und langsam bei der Lösung Sorry...[/edit]
zuerst dachte ich, dass es relativ leicht ist mit der SendKeys Anweisung hier zu agieren.
Das Problem dabei war, dass nach einem Rechtsklick in einer ausgeführten Powerpointpräsentation die Sendkeys Anweisung nicht funktioniert bzw. sich auf die Hauptapplikation bezieht.
Deshalb habe ich einen Workaround programmiert, der auf jeden Fall bei einer Auflösung von 1024x768 funktioniert. Ist zwar aus anderen VB Quellen zusammengebastelt, erfüllt jedoch seinen Zweck prima!
Erstelle in der Powerpoint Datei ein neues Modul.
In dieses Modul fügt du den folgenden Code ein und setzt dein "Makro-Button" auf die Sub "Makro1()" (Extras --> Anpassen in Powerpoint)
Willst du dir das mal genau anschauen, kommentier das letzte "SendMausklick MOUSE_LEFT" einfach aus...
Gruß
Markus
[edit] Mannomann, war ich kompliziert und langsam bei der Lösung Sorry...[/edit]
zuerst dachte ich, dass es relativ leicht ist mit der SendKeys Anweisung hier zu agieren.
Das Problem dabei war, dass nach einem Rechtsklick in einer ausgeführten Powerpointpräsentation die Sendkeys Anweisung nicht funktioniert bzw. sich auf die Hauptapplikation bezieht.
Deshalb habe ich einen Workaround programmiert, der auf jeden Fall bei einer Auflösung von 1024x768 funktioniert. Ist zwar aus anderen VB Quellen zusammengebastelt, erfüllt jedoch seinen Zweck prima!
Erstelle in der Powerpoint Datei ein neues Modul.
In dieses Modul fügt du den folgenden Code ein und setzt dein "Makro-Button" auf die Sub "Makro1()" (Extras --> Anpassen in Powerpoint)
'Benötigte Deklarationen
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetCursorPos Lib "user32" (cPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, _
ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Public Const MOUSE_LEFT = 0
Public Const MOUSE_MIDDLE = 1
Public Const MOUSE_RIGHT = 2
'TPOINT beinhaltet die Koordinaten, wo sich die Maus gerade befindet und ist mit
'Wo_ist_die_Maus zu aktualisieren... s.u.
Dim tPoint As POINTAPI
'Die nachfolgende Prozedur simuliert den gewünschten Mausklick.
Public Sub SendMausklick(ByVal mButton As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
If (mButton = MOUSE_LEFT) Then
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
ElseIf (mButton = MOUSE_MIDDLE) Then
Call mouse_event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0)
Else
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
End If
End Sub
Sub Makro1()
SendKeys "{F5}", True
SendMausklick MOUSE_RIGHT
Sleep 500
Wo_ist_die_Maus
'Nach Zeigeroptionen bewegen und bestätigen
Cursor_bewegen_nach tPoint.x + 30, tPoint.y + 150
SendMausklick MOUSE_LEFT
Wo_ist_die_Maus
'Nach Pfeiloptionen bewegen und bestätigen
Cursor_bewegen_nach tPoint.x + 220, tPoint.y + 180
SendMausklick MOUSE_LEFT
Wo_ist_die_Maus
'Nach Sichtbar bewegen und bestätigen
Cursor_bewegen_nach tPoint.x - 100, tPoint.y + 20
SendMausklick MOUSE_LEFT
End Sub
Sub Wo_ist_die_Maus()
Dim x As Long
x = GetCursorPos(tPoint)
End Sub
Sub Cursor_bewegen_nach(xziel As Long, yziel As Long)
Dim x As Long, y As Long, n As Long
x = xziel
y = yziel
n = SetCursorPos(x, y)
End Sub
Willst du dir das mal genau anschauen, kommentier das letzte "SendMausklick MOUSE_LEFT" einfach aus...
Gruß
Markus