Hallo, ich habe mal folgende Frage. Ich habe unten stehendes kleines Autoit Script geschrieben, mit dem ich Telefonnummern so umbaue, das ich sie in Lync sauber verwenden kann. Das ganze geht recht einfach, d.h. ich markiere die "komische" Telefonnummer, drücke F3 zum Einlesen und umbauen und F4 um es in Lync reinzukopieren und gleich loswählen lassen.
Es kommt aber pro Tag ca. 2 bis 3 mal vor, das sich die EXE einfach beendet, ohne irgendeine Fehlermeldung. Ich merke das halt nur daran, das meine F3 und F4 Tasten plötzlich nicht mehr gehen. Mein Trayicon ist eigentlich auch noch sichtbar, sobald ich jedoch mit der Maus über das Trayicon fahre, verschwindet es.
Was kann ich hier denn machen, damit ich solche Abstürze mitbekomme und was kann man dann dagegen machen?
Hier mal der Code:
Spoiler anzeigen
#include <TrayConstants.au3>
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{F3}", "_WritePhoneNumbr")
HotKeySet("{F4}", "_Copy2Lync")
;Tray-Menü anpassen
Opt("TrayAutoPause", 0) ; Script will not be paused when clicking the tray icon.
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1 + 2)
$Version = "1.0.3"
$versionitem = TrayCreateItem("Version: " & $Version)
TrayItemSetState(-1, $TRAY_UNCHECKED)
$exititem = TrayCreateItem("Beenden")
TrayItemSetState(-1, $TRAY_UNCHECKED)
TrayItemSetOnEvent(-1, "_Exit")
TraySetState()
Global $Input, $Output, $_sNumber, $_sNumber1, $_sNumber2, $_sNumber3, $_sNumber4, $_sNumber5, $_sNumber6, $iLength, $shostname
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(100)
WEnd
Func _WritePhoneNumbr(); F3
$Input = ClipPut(""); Zwischenablage leeren
Send("^c"); Markierter Text wird in die Zwischenablage geschrieben
$Input = ClipGet(); Zwischenablage wird in die Variable $Input ausgelesen
If $Input = "" Then
MsgBox(16, "STOP", "Es wurde keine Rufnummer in der Zwischenablage gefunden." & @CRLF & @CRLF & "Bitte wiederholen!", 3)
Else
$_sNumber = StringRegExpReplace($Input, '\(0\)', '', 1); Das erste Vorkommen von (0) wird gelöscht
;~ ConsoleWrite("1: " & $_sNumber & @CRLF)
$_sNumber2 = StringRegExpReplace($_sNumber, '(-|\s|\(|\)|/|\\|–|\.)', ''); Entferne - | s | ( | ) | / | \ –
;~ ConsoleWrite("2: " & $_sNumber2 & @CRLF)
$_sNumber3 = StringRegExpReplace($_sNumber2, '(\+49|049)', ''); Ersetze ein +49 oder 049 mit Leerzeichen
;~ ConsoleWrite("3: " & $_sNumber3 & @CRLF)
$iLength = StringLen($_sNumber3); Bestimme die Länge des Strings
;~ ConsoleWrite("4: Länge = " & $iLength & @CRLF)
If $iLength > 3 Then; Wenn der String größer 3 ist dann, gehe in die IF Schleife
$_sNumber4 = StringLeft($_sNumber3, 1); Prüfe das 1. Zeichen von Links
If $_sNumber4 = "0" Then; Wenn das erste Zeichen von Links eine Null ist, gehe in die IF Schleife
;~ ConsoleWrite("5: If ist wahr, also 0 dann: " & $_sNumber4 & @CRLF)
$_sNumber5 = StringRegExpReplace($_sNumber3, '0', '', 1); Wenn die erste Ziffer eine Null ist, dann durch ein Leerzeichen ersetzen
;~ ConsoleWrite("6: " & $_sNumber5 & @CRLF)
$_sNumber6 = ("+49" & $_sNumber5); Setze + 49 vor die Nummer
;~ ConsoleWrite("7: " & $_sNumber6 & @CRLF)
Else
;~ ConsoleWrite("5: If ist unwahr, also nicht 0 dann: " & $_sNumber4 & @CRLF)
;~ ConsoleWrite("6: " & $_sNumber3 & @CRLF)
$_sNumber6 = ("+49" & $_sNumber3); Setze + 49 vor die Nummer
;~ ConsoleWrite("7: " & $_sNumber6 & @CRLF)
EndIf
$Output = ClipPut($_sNumber6); schreibe das Ergebnis in die Zwischenablage zurück
Else
$Output = ClipPut($_sNumber3); schreibe das Ergebnis in die Zwischenablage zurück
EndIf
EndIf
EndFunc ;==>_WritePhoneNumbr
[/autoit] [autoit][/autoit] [autoit]Func _Copy2Lync(); F4
Send("^a"); Strg + a = alles markieren
Send("{DELETE}"); Vorhandene Nummer wird gelöscht
Send("^v"); Markierter Text wird aus der Zwischenablage geschrieben
If $shostname = "DE00-FM230-L" Then; PC mit Lync Attandant 2010
Send("{ENTER 2}"); Einfügen und Enter zum wählen
Else; andere PCs mit Lync 2013
Sleep(1000)
Send("{ENTER}"); Einfügen und Enter zum wählen
;~ ConsoleWrite("MOLE")
EndIf
EndFunc ;==>_Copy2Lync
Func _Exit()
Exit
EndFunc ;==>_Exit
Danke für eure Hilfe