Vielen Dank für den Link. Habe mir es kopiert und abgespeichert.
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Const NameTasteEinAus = "TasteEA", NameBeschriftungsfeldTasteEinAus = "BFeldTasteEA", NameTextfeldProgrammPfad = "ProgrammPfad", NameTextfeldVideoPfad = "VideoPfad", _
rot = 16711680, gruen = 32768, EIN = "EIN", AUS = "AUS", InneresGrenzzeichen ="#", AuessresGrenzzeichen =" ", VideoNummerZeichen = "*", VideoNrMax = 30, _
MaxLaengeZeitfeld = 35, LinkeGrenze = " #", RechteGrenze = "# ", TrennZeichen = "+"
Global ProgrammPfad, LabelEIN, LabelAUS, HilfetextEIN, HilfetextAUS as string, oDoc As Object, aktiviert, bestaetigt as boolean, oMouseClickHandler As Object, _
ArrayVideoNamen(VideoNrMax) as string
sub main
end sub
Function ControlNummerZuControlName(ControlName)
Dim Anzahl, sName, i
Anzahl = thiscomponent.drawpage.count
i = 0
do
sName = thiscomponent.drawpage(i).control.name
i = i+1
loop until sName = ControlName OR i=Anzahl
if sName = ControlName then ControlNummerZuControlName = i-1
end Function
Sub Aktiviere
if aktiviert then exit sub
oDoc = ThisComponent.currentController
oMouseClickHandler = createUnoListener("Wupp_", "com.sun.star.awt.XMouseClickHandler")
oDoc.addMouseClickHandler(oMouseClickHandler)
aktiviert = TRUE
End Sub
Sub Deaktiviere
on error goto Fehler
oDoc = ThisComponent.currentController
oDoc.removeMouseClickHandler(oMouseClickHandler)
aktiviert = FALSE
bestaetigt = FALSE
goto Ende
Fehler:
msgbox "FEHLER: "+err
on error goto 0
Ende:
End Sub
Sub Wupp_disposing(oEvt)
End Sub
Function Wupp_mousePressed(oEvt) As Boolean
Wupp_mousePressed = False
End Function
Function Wupp_mouseReleased(oEvt) As Boolean
if aktiviert AND NOT bestaetigt then
bestaetigt = TRUE
exit Function
end if
Dim xq As String
Dim yq As String
With oEvt
xq = .X
yq = .Y
End With
'msgbox "x = "+xq+" / y = "+yq
Wupp_mouseReleased = False
WaehleSzene
End Function
Function PfadUmformen(Pfad)
Dim i, PositionI, ArrayPos(100) as integer, AnzahL , Bipp
i = 0
PositionI = 1
do
i = i+1
PositionI = instr(PositionI + 1,Pfad,"\")
ArrayPos(i) = PositionI
Bipp = ArrayPos(i)
Bipp = ArrayPos(i-1)
loop until PositionI = 0
AnzahL = i-1
for i=Anzahl to 2 step -1
Pfad = left(Pfad, ArrayPos(i)-1) + """\\""" + right(Pfad,len(Pfad)- ArrayPos(i))
next
Pfad = left(Pfad, ArrayPos(i)-1)+"\\"""+right(Pfad,len(Pfad)- ArrayPos(i))+""""
PfadUmformen = Pfad
end Function
sub Initialisiere
Dim ControlNummer
LabelEIN = "Befehlsweitergabe EINGESCHALTET" & Chr(10) & "Die grüne Taste drücken, um Zeitfelder und Adressen zu bearbeiten."
LabelAUS = "Befehlsweitergabe AUSGESCHALTET. Die Felder können bearbeitet werden." & Chr(10) & "Die rote Taste drücken, um die Befehlsweitergabe einzuschalten."
HilfetextEIN = "Befehlsweitergabe EINGESCHALTET. Die grüne Taste drücken, um die Zeitfelder zu bearbeiten."
HilfetextAUS = "Befehlsweitergabe AUSGESCHALTET. Die Zeitfelder können bearbeitet werden. Die rote Taste drücken, um die Befehlsweitergabe einzuschalten."
ControlNummer = ControlNummerZuControlName(NameTextfeldProgrammPfad)
ProgrammPfad = thiscomponent.drawpage(ControlNummer).control.text
dim ControlName, i, ControlText, Position, sNummer, iNummer, Pfad
for i=0 to VideoNrMax
ArrayVideoNamen(i)=""
next
i = 0
do
on error goto SprungEnde
ControlName = thiscomponent.drawpage(i).control.name
if ControlName = "VideoPfad" then
ControlText = thiscomponent.drawpage(i).control.text
Position = instr(1,ControlText,"*")
if Position = 0 then
iNummer = VideoNrMax
goto Sprung1
end if
sNummer = left(ControlText, Position-1)
iNummer = val(sNummer)
Sprung1:
Pfad = right(ControlText, len(ControlText)-Position)
Pfad = PfadUmformen(Pfad)
ArrayVideoNamen(iNummer) = Pfad
end if
i = i+1
loop
SprungEnde:
end sub
sub SchalteUm
Dim ControlNummerTasteEinAus, ControlNummerBeschriftungsfeldTasteEinAus, TasteEinAus, BeschriftungsfeldTasteEinAus
Initialisiere
ControlNummerTasteEinAus = ControlNummerZuControlName(NameTasteEinAus)
ControlNummerBeschriftungsfeldTasteEinAus = ControlNummerZuControlName(NameBeschriftungsfeldTasteEinAus)
TasteEinAus = thiscomponent.drawpage(ControlNummerTasteEinAus).control
BeschriftungsfeldTasteEinAus = thiscomponent.drawpage(ControlNummerBeschriftungsfeldTasteEinAus).control
if TasteEinAus.backgroundcolor = gruen then
TasteEinAus.backgroundcolor = rot
TasteEinAus.label = AUS
TasteEinAus.helptext = HilfetextAUS
BeschriftungsfeldTasteEinAus.label = LabelAUS
Deaktiviere
else
TasteEinAus.backgroundcolor = gruen
TasteEinAus.label = EIN
TasteEinAus.helptext = HilfetextEIN
BeschriftungsfeldTasteEinAus.label = LabelEIN
aktiviere
end if
end sub
Sub StarteVideo(VideoNr, AnfangsZeitSekunden, EndZeitSekunden)
Dim Ergebnis, GesamtString
GesamtString = ProgrammPfad + " " + ArrayVideoNamen(VideoNr) + " --start-time=" + AnfangsZeitSekunden + _
" --stop-time=" + EndZeitSekunden + " --global-key-play-pause=771" + " --key-play-pause=771" + " --video-x=1000" + " --video-y=0" + " --scale=1" + " --video-deco" + _
" --video-title='uppaduppa'" + " --zoom=200"
Shell ("TASKKILL /F /IM vlc.exe")
wait 200
Ergebnis = _
Shell(GesamtString)
End Sub
Sub StarteGanzesVideo
StarteVideo(0,0)
End Sub
Function BildeZahl(StringF as String) as long
Const Beobachten1 = false, Beobachten2 = false
Dim iStunden, Stunden$, Rest, iMinuten, Minuten$, iSekunden, Sekunden$, ZehntelSekunden
iStunden = instr(StringF,":")
if Beobachten1 then print iStunden
Stunden$ = left(StringF,iStunden-1)
if Beobachten1 then print Stunden$
Rest = right(StringF,len(StringF)-iStunden
if Beobachten1 then print Rest
iMinuten = instr(Rest,":")
Minuten$ = left(Rest,iMinuten-1)
if Beobachten1 then print Minuten$
Rest = right(Rest,len(Rest)-iMinuten
if Beobachten1 then print Rest
iSekunden = instr(Rest,"-")
Sekunden$ = left(Rest,iSekunden-1)
if Beobachten1 then print "Sekunden: " & Sekunden$
Rest = right(Rest,len(Rest)-iSekunden
if Beobachten1 then print "Zehntel Sekunden: " & Rest
ZehntelSekunden = 36000*CLng(Stunden$)+600*CLng(Minuten$)+10*CLng(Sekunden$)+Rest
if Beobachten2 then print "ZehntelSekunden: " & ZehntelSekunden
BildeZahl = ZehntelSekunden/10
End Function
Sub WaehleSzene
Dim ZahlL, oDoc, oVC, oTC1, oTC2, bExtend, StringA, i, j, StringR, StringGefunden, iTrennZeichen, _
AnfangsZeit, iAnfangsZeit, AnfangsZeitSekunden, EndZeit, iEndZeit, EndZeitSekunden, LaengeA, sVideoNummer, VideoNummer
'on error goto 0
on error goto Ende
Const Beobachten1 = false, Beobachten2 = false
oDoc = ThisComponent
oVC = oDoc.CurrentController.getViewCursor 'Create View Cursor oVC
oTC1 = oDoc.Text.createTextCursorByRange(oVC) 'Create Text Cursor by cloning the View Cursor (both have same position in doc)
oTC2 = oDoc.Text.createTextCursorByRange(oVC) 'Create Text Cursor by cloning the View Cursor (both have same position in doc)
bExtend = false
oTC2.goRight(MaxLaengeZeitfeld, FALSE)
oTC1.gotoRange(oTC2,true) 'Move Text Cursor to same location as oVC while selecting text in between (True)
StringA = oTC1.String
LaengeA = len(StringA)
if Beobachten1 then print StringA
i = instr(StringA,LinkeGrenze)
'if i<>0 then exit sub
j = instr(StringA,RechteGrenze)
if j=0 then exit sub
if Beobachten1 then print j
if i<j AND i<>0 then exit sub
StringR = left(StringA,j-1) 'StrigR ist der rechte Stumpf, vom Kursor bis zur rechten Grenze.
ZahlL = MaxLaengeZeitfeld - len(StringR)
oTC2.goLeft(ZahlL, FALSE)
oTC1.gotoRange(oTC2,FALSE)
oTC1.goLeft(MaxLaengeZeitfeld,FALSE)
oTC1.gotoRange(oTC2,true)
StringA = oTC1.String
i = instr(StringA,LinkeGrenze)
if Beobachten1 then print i
StringGefunden = right(StringA,len(StringA)-i-1)
'StringGefunden = left(StringGefunden, len(StringGefunden)-1)
if Beobachten1 then print StringGefunden
i = instr(StringGefunden, VideoNummerZeichen)
if i=0 then
VideoNummer = VideoNrMax
else
sVideoNummer = left(StringGefunden, i-1)
VideoNummer = val(sVideoNummer)
end if
StringGefunden = right(StringGefunden, len(StringGefunden)-i
iTrennZeichen = instr(StringGefunden,TrennZeichen)
AnfangsZeit = mid(StringGefunden, 2, iTrennZeichen-2)
if Beobachten2 then print "AnfangsZeit: " & AnfangsZeit
iAnfangsZeit = BildeZahl(AnfangsZeit)
AnfangsZeitSekunden = str(iAnfangsZeit)
AnfangsZeitSekunden = right(AnfangsZeitSekunden,len(AnfangsZeitSekunden)-1)
EndZeit = mid(StringGefunden, iTrennZeichen+1, len(StringGefunden)-iTrennZeichen-1)
if Beobachten2 then print "EndZeit: " & EndZeit
iEndZeit = BildeZahl(EndZeit)
EndZeitSekunden = str(iEndZeit)
EndZeitSekunden = right(EndZeitSekunden,len(EndZeitSekunden)-1)
StarteVideo(VideoNummer,AnfangsZeitSekunden,EndZeitSekunden)
Ende:
End Sub
bei eingeschaltetem Maus-Handler... und so: