- Mitglied seit
- 21 Jan 2006
- Beiträge
- 1,314
- Punkte für Reaktionen
- 86
- Punkte
- 48
Code:
Friend Sub AnrMonRING(ByVal FBStatus As String(), ByVal AnrMonAnzeigen As Boolean, ByVal StoppUhrAnzeigen As Boolean)
' wertet einen eingehenden Anruf aus
' Parameter: FBStatus (String ()): Status-String der FritzBox
' anzeigen (Boolean): nur bei 'true' wird 'AnrMonEinblenden' ausgeführt
' FBStatus(0): Uhrzeit
' FBStatus(1): RING, wird nicht verwendet
' FBStatus(2): Die Nummer der aktuell aufgebauten Verbindungen (0 ... n), dient zur Zuordnung der Telefonate, ID
' FBStatus(3): Eingehende Telefonnummer, TelNr
' FBStatus(4): Angerufene eigene Telefonnummer, MSN
' FBStatus(5): ???
Dim Vorwahl As String = C_XML.Read("Optionen", "TBVorwahl", "")
Dim checkstring As String = C_XML.Read("Telefone", "CLBTelNr", "-1") ' Enthällt alle MSN, auf die reagiert werden soll
Dim MSN As String = CStr(FBStatus.GetValue(4))
If hf.IsOneOf(hf.OrtsVorwahlEntfernen(MSN, Vorwahl), Split(checkstring, ";", , CompareMethod.Text)) Or AnrMonPhoner Then
'Dimensionierung in die Abfrage geschoben, um eine unnötige Dimensionierung zu verhindern.
Dim TelNr As String ' ermittelte TelNr
Dim Anrufer As String = vbNullString ' ermittelter Anrufer
Dim vCard As String = vbNullString ' vCard des Anrufers
Dim KontaktID As String = "-1;" ' ID der Kontaktdaten des Anrufers
Dim StoreID As String = "-1" ' ID des Ordners, in dem sich der Kontakt befindet
Dim ID As Integer ' ID des Telefonats
Dim index As Long ' Zählvariable
'Dim GefundenerKontakt As Outlook.ContactItem
Dim rws As Boolean = False ' 'true' wenn die Rückwärtssuche erfolgreich war
Dim LandesVW As String = C_XML.Read("Optionen", "TBLandesVW", "0049") ' eigene Landesvorwahl
'Phoner
Dim PhonerTelNr() As String
' Anruf nur anzeigen, wenn die MSN oder VoIP-Nr stimmt
ID = CInt(FBStatus.GetValue(2))
TelNr = CStr(FBStatus.GetValue(3))
'Phoner
If AnrMonPhoner Then
Dim pos As Integer = InStr(TelNr, "@", CompareMethod.Text)
If Not pos = 0 Then
TelNr = Left(TelNr, pos - 1)
Else
PhonerTelNr = hf.TelNrTeile(TelNr)
If Not PhonerTelNr(1) = "" Then TelNr = PhonerTelNr(1) & Mid(TelNr, InStr(TelNr, ")", CompareMethod.Text) + 2)
If Not PhonerTelNr(0) = "" Then TelNr = PhonerTelNr(0) & Mid(TelNr, 2)
End If
TelNr = hf.nurZiffern(TelNr, LandesVW)
End If
' Ende Phoner
If Len(TelNr) = 0 Then TelNr = "unbekannt"
MSN = CStr(FBStatus.GetValue(4))
Dim letzterAnrufer() As String = {CStr(FBStatus.GetValue(0)), Anrufer, TelNr, MSN, StoreID, KontaktID}
' Der letzterAnrufer enthält in dieser Reihenfolge Uhrzeit, Anrufername, Telefonnummer, MSN, StoreID, KontaktID
C_XML.Write("letzterAnrufer", "letzterAnrufer" & ID, Join(letzterAnrufer, ";"), False)
' Daten für Anzeige im Anrurfmonitor speichern
C_XML.Write("letzterAnrufer", "Letzter", CStr(ID), False)
If AnrMonAnzeigen Then
If Not OlI.VollBildAnwendungAktiv Then
BWAnrMonEinblenden = New BackgroundWorker
BWAnrMonEinblenden.RunWorkerAsync(ID)
End If
End If
' Daten in den Kontakten suchen und per Rückwärtssuche ermitteln
If Not TelNr = "unbekannt" Then
Dim FullName As String = vbNullString
Dim CompanyName As String = vbNullString
' Anrufer in den Outlook-Kontakten suchen
If OlI.StarteKontaktSuche(KontaktID, StoreID, CBool(C_XML.Read("Optionen", "CBKHO", "True") = "True"), TelNr, "", LandesVW) Then
OlI.KontaktInformation(KontaktID, StoreID, FullName:=FullName, CompanyName:=CompanyName)
Anrufer = Replace(FullName & " (" & CompanyName & ")", " ()", "")
If CBool(C_XML.Read("Optionen", "CBIgnoTelNrFormat", "False")) Then TelNr = hf.formatTelNr(TelNr)
Else
' Anrufer per Rückwärtssuche ermitteln
If C_XML.Read("Optionen", "CBRueckwaertssuche", "False") = "True" Then
Dim RWSIndex As Boolean = CBool(C_XML.Read("Optionen", "CBRWSIndex", "True"))
If RWSIndex Then vCard = C_XML.Read("CBRWSIndex", TelNr, "")
If vCard = vbNullString Then
Select Case C_XML.Read("Optionen", "CBoxRWSuche", "0")
'Case "0"
' rws = frmRWS.RWSGoYellow(TelNr, vCard)
Case "0"
rws = frmRWS.RWS11880(TelNr, vCard)
Case "1"
rws = frmRWS.RWSDasTelefonbuch(TelNr, vCard)
Case "2"
rws = frmRWS.RWStelsearch(TelNr, vCard)
Case "3"
rws = frmRWS.RWSAlle(TelNr, vCard)
End Select
'Im folgenden wird automatisch ein Kontakt erstellt, der durch die Rückwärtssuche ermittlt wurde. Dies geschieht nur, wenn es gewünscht ist.
If rws And C_XML.Read("Optionen", "CBKErstellen", "False") = "True" Then
KontaktFunktionen.ErstelleKontakt(KontaktID, StoreID, vCard, TelNr)
OlI.KontaktInformation(KontaktID, StoreID, FullName:=FullName, CompanyName:=CompanyName)
Anrufer = Replace(FullName & " (" & CompanyName & ")", " ()", "")
End If
Else
rws = True
vCard = Replace(vCard, "=0D", Chr(13), , , CompareMethod.Text)
vCard = Replace(vCard, "=0A", Chr(10), , , CompareMethod.Text)
End If
If rws And KontaktID = "-1;" Then
Anrufer = ReadFNfromVCard(vCard)
Anrufer = Replace(Anrufer, Chr(13), "", , , CompareMethod.Text)
If InStr(1, Anrufer, "Firma", CompareMethod.Text) = 1 Then Anrufer = Right(Anrufer, Len(Anrufer) - 5)
Anrufer = Trim(Anrufer)
vCard = Replace(vCard, Chr(13), "=0D", , , CompareMethod.Text)
vCard = Replace(vCard, Chr(10), "=0A", , , CompareMethod.Text)
If RWSIndex Then C_XML.Write("CBRWSIndex", hf.nurZiffern(TelNr, LandesVW), vCard, False)
KontaktID = "-1" & Anrufer & ";" & vCard
End If
End If
TelNr = hf.formatTelNr(TelNr)
End If
letzterAnrufer(1) = Anrufer
letzterAnrufer(2) = TelNr
letzterAnrufer(5) = KontaktID
letzterAnrufer(4) = StoreID
C_XML.Write("letzterAnrufer", "letzterAnrufer" & ID, Join(letzterAnrufer, ";"), True)
' Daten im Menü für Rückruf speichern
index = CLng(C_XML.Read("AnrListe", "Index", "0"))
If Not Split(C_XML.Read("AnrListe", "AnrListeEintrag" & Trim(Str((index + 9) Mod 10)), ";"), ";", 5, CompareMethod.Text)(1) = TelNr Then
Dim StrArr() As String = {Anrufer, TelNr, FBStatus(0), CStr((index + 1) Mod 10), StoreID, KontaktID}
C_XML.Write("AnrListe", "AnrListeEintrag" & index, Join(StrArr, ";"), False)
C_XML.Write("AnrListe", "Index", CStr((index + 1) Mod 10), True)
#If OVer < 14 Then
If C_XML.Read( "Optionen", "CBSymbAnrListe", "False") = "True" Then GUI.FillPopupItems("AnrListe")
#End If
End If
End If
'StoppUhr
If StoppUhrAnzeigen Then
With STUhrDaten(ID)
.Richtung = "Anruf von:"
If Anrufer = "" Then
.Anruf = TelNr
Else
.Anruf = Anrufer
End If
End With
End If
' Daten für den Journaleintrag sichern
If C_XML.Read("Optionen", "CBJournal", "False") = "True" Or StoppUhrAnzeigen Then
NeuerJournalEintrag(ID, "Eingehender Anruf von", CStr(FBStatus.GetValue(0)), MSN, TelNr, KontaktID, StoreID)
End If
End If
End Sub '(AnrMonRING)
Ja in der Funktion tritt eine IndexOutOfRangeException auf. aber wo nur? Wer den Fehler findet, kriegt ein Eis.