Zweiter Teil
Public Sub SendKeyStr(ByVal sText As String) ' Send Text
' to active Control by simulating Key Strokes
Dim sChar As String, sString As String, sRep As String ' Character
' to analyze, String to send, Repetitions
Dim I As Integer, J As Integer, iRep As Integer, iPos As Integer ' Loop
' Counters, Number of Repetitions, Position within String
Dim bRep As Boolean ' Flag for
' last Repetition
SendKeyDebug = False
If SendKeyDebug Then Kdebug "Start with " & sText
sRep = "0" ' Initialize
For I = 1 To Len(sText) ' Loop:
' process String
sChar = Mid(sText, I, 1) ' Get
' Character
' Analyse Character; check +%^, if any set Flag. Multiple +%^ have no
' effect
If sChar = "+" Then ' Shift
bShift = True
sChar = ""
ElseIf sChar = "%" Then ' ALT
bAlt = True
sChar = ""
ElseIf sChar = "^" Then ' STRG
bCtrl = True
sChar = ""
End If
If (bShift And Not bShiftd) Or (bAlt And Not bAltd) Or (bCtrl And Not _
bCtrld) Then
If SendKeyDebug Then Kdebug "before send Control Key; " & sChar
SendKeysEx bRep, sChar ' Send
' Control Keys if any
If SendKeyDebug Then Kdebug "after send Control Key"
Else
If sChar = "(" Then ' Round
' Bracket found?
bRound = True
I = I + 1
ElseIf sChar = "{" Then ' Curly
' Bracket found?
bCurly = True _
' Is evaluated in SendKeysEx
If InStr(I + 1, sText, "}") > 0 Then _
' Closing curly Bracket found?
sString = Mid(sText, I + 1, InStr(I + 1, sText, "}") - I - _
1) ' Get Text inside curly Brackets
I = I + Len(sString) + 1 _
' Set Index to closing curly Bracket before altering
' sString
iPos = InStrRev(sString, " ") _
' Find Delimiter from Text to Number of Replications
If iPos > 0 Then
sRep = Mid(sString, iPos + 1, Len(sString) - iPos) _
' Number of Replications
If IsNumber(sRep) Then
sString = Left(sString, iPos - 1) _
' Raw Text to send
End If
End If
If sRep = "0" Then _
' Determine Number of Repetitions
iRep = 1
Else
iRep = CInt(sRep)
End If
For J = 1 To iRep
If J = iRep Then bRep = True _
' last repetition reached, reset Control Keys
If SendKeyDebug Then Kdebug "before send Output within" & _
"curly Brackets; bcurly: " & bCurly & "; " & sString
SendKeysEx bRep, sString _
' Send Output within curly Brackets
If SendKeyDebug Then Kdebug "after send Output within" & _
"curly Brackets; bcurly: " & bCurly & "; " & sString
Next
bRep = False
sRep = "0" _
' Reset Number of Repetitions
bCurly = False _
' Reset Flag
End If
End If
' Send each single Character up to next ) or {
sChar = Mid(sText, I, 1) ' Determine
' current Character Das muß doch irgendwie gehen! |