• Offizieller Beitrag

    Für ein Chatprogramm braucht man eine geeignete Anzeige. Ein einfaches Edit wäre für puren Text zwar ausreichend, aber schöner wird's mit HTML, also einen embedded IE, so meine Überlegung zu dieser UDF.
    Die Funktion _Chatbox_Create erstellt dann auch einen solchen und mit _Chatbox_SetData kann man einen Text dort hineinschreiben. Wobei man auch BB-Codes eingeben kann z.B. fett oder kursiv
    Die Funktion _Chatbox_ConvertSmilies übernimmt dann das umwandeln von z.B. ;) in ein PNG-Smily (bisher gibt es 18 Smilies siehe Array in der Funktion).

    Bisherige Eigenschaften:
    - Wählbare Hintergrundfarbe für die Chatbox
    - Schriftfarbe und -größe für jeden einzelnen Eintrag wählbar
    - Größe der Smilies wählbar
    - BB-Codes können zur Schriftformatierung benutzt werden (b, i, u, size und color wird unterstützt)
    - Logfile kann erstellt werden
    - Hyperlinks und Mailadressen werden in anklickbare Links umgewandelt
    - Funktion, um ein Fenster mit allen verfügbaren Smilies anzuzeigen und auf Mausklick in ein Text-Smiley umzuwandeln

    History


    Edit 18.01.10: Einige Fehler behoben:
    - bei _Chatbox_SmileyToText() wurden unter WinXP die Smilies nicht angezeigt (der Trick mit WinSetTrans für PNGs funktioniert da nicht).
    - außerdem kann man bei _Chatbox_SmileyToText() jetzt ein Parent-Window angeben. Das Smiley-Fenster wird dann ein Child davon (Parent wird solange disabled).
    - _Chatbox_ConvertHyperlink() extrem reduziert. ^^
    - wenn man die BB-Codes "Color" und "Size" gleichzeitig in einer Zeile benutzte, funktionierte nur einer.
    - es gibt jetzt noch einen "BB-Code" und zwar: [hr], das entspricht der horizontalen Linie in HTML.

    Edit 24.05.10:
    - Beim erstellen der Chatbox kann man nun angeben, ob die vertikale Scrollbar vorhanden sein soll oder nicht bzw. nur bei Bedarf.
    - Funktion: _Chatbox_ReadText() hinzugefügt
    - Funktion: _Chatbox_ReadHTML() hinzugefügt


    Edit 28.05.10:
    - Fehler in der Funktion _Chatbox_ReadHTML() behoben.

    Edit 10.05.11:
    - Die Schriftart kann nun per _Chatbox_SetData() vorgegeben werden oder
    - über den BB-Code "face" innerhalb der Zeile geändert werden: z.B. [face="Times New Roman"]ein Text[/face]

    UDF
    [autoit]


    #include-once
    #include <GUIConstantsEx.au3>
    #include <File.au3>
    #include <GDIPlus.au3>
    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $_Chatbox_hChild, $_Chatbox_hGraphic, $_Chatbox_aSmileyFiles, $_Chatbox_ahImage, $_Chatbox_ahDummy

    [/autoit] [autoit][/autoit] [autoit]

    ; #INDEX# ======================================================================
    ; Title: Chatbox-UDF (vom 10.05.2011)
    ; AutoIt Version: min. 3.3.0.0
    ; Language: German
    ; Description: erstellen einer Textausgabebox für Chatprogramme
    ;
    ; Funktions:
    ; _Chatbox_Create()
    ; _Chatbox_SetData()
    ; _Chatbox_ReadText()
    ; _Chatbox_ReadHTML()
    ; _Chatbox_ConvertSmilies()
    ; _Chatbox_ConvertMailto()
    ; _Chatbox_ConvertHyperlink()
    ; _Chatbox_SmileyToText()
    ; __Chatbox_WM_PAINT() = nur interne Benutzung
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_Create($hWnd, $iLeft, $iTop, $iWidth, $iHeight[, $iBgColor][, $sLogfile][, $sImgPath][, $sScrollbar])
    ; Description:: erstellt eine Chatbox
    ; Parameter(s): $hWnd = Handle des Fensters, auf dem die Box erstellt werden soll
    ; $iLeft, $iTop = Position der Box
    ; $iWidth, $iHeight = Größe der Box
    ; $iBgColor = Hintergrundfarbe der Box
    ; $sLogfile = Logfile-Dateiname (inkl. Pfad). Ergebnis ist eine HTML-Datei.
    ; $sImgPath = Verzeichnispfad zu den Smiley-PNGs, Standard: @ScriptDir & '\png\'
    ; $sScrollbar = Vertikale Scrollbar anzeigen?
    ; auto = nur wenn benötigt
    ; yes = ja, immer
    ; no = nie anzeigen
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s): bei Erfolg = Array, für den Aufruf der anderen Funktionen
    ; bei Fehler = Rückgabe: Null
    ; und @error = 1 (embedded IE konnte nicht erstellt werden)
    ; 2 (das GUI-Objekt für den IE konnte nicht erstellt werden)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_Create($hWnd, $iLeft, $iTop, $iWidth, $iHeight, $iBgColor = 0xffffff, $sLogfile = '', $sImgPath = '', $sScrollbar = 'auto')
    Local $ahChat[5], $sTempFile, $oBody
    $ahChat[0] = _IECreateEmbedded()
    If @error Then Return SetError(1, 0, 0)
    GUISwitch($hWnd)
    $ahChat[1] = GUICtrlCreateObj($ahChat[0], $iLeft, $iTop, $iWidth, $iHeight)
    GUICtrlSetResizing(-1, 1)
    If $ahChat[1] = 0 Then Return SetError(2, 0, 0)
    If Not FileExists($sImgPath) Then $sImgPath = @ScriptDir & '\png\'
    If StringRight($sImgPath, 1) <> '\' Then $sImgPath &= '\'
    $ahChat[2] = '<html>' & @CRLF & '<head>' & @CRLF & '<title>Chatbox</title>' & @CRLF & '<style type="text/css">body { background-color:#' & Hex($iBgColor, 6)
    $ahChat[2] &= '; padding:0px; margin:4px; } p { margin:4px; }</style>' & @CRLF & '</head>' & @CRLF
    $ahChat[2] &= '<body scroll="' & $sScrollbar & '">' & @CRLF & '</body>' & @CRLF & '</html>'
    $sTempFile = @TempDir & '\ChatboxTemp.html'
    $hFile = FileOpen($sTempFile, 2)
    FileWrite($hFile, $ahChat[2])
    FileClose($hFile)
    _IENavigate($ahChat[0], $sTempFile)
    $ahChat[3] = ''
    If $sLogfile <> '' Then
    If FileCopy($sTempFile, $sLogfile, 9) Then $ahChat[3] = $sLogfile
    EndIf
    FileDelete($sTempFile)
    $ahChat[4] = $sImgPath
    Return $ahChat
    EndFunc ;==>_Chatbox_Create

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_SetData($ahChat, $sMsg[, $iColor][, $iSize][, $iImgSize])
    ; Description:: Funktion zum schreiben in die Chatbox
    ; Parameter(s): $ahChat = das Rückgabe-Array von _Chatbox_Create()
    ; $sMsg = die Textzeile, die in die Chatbox geschrieben werden soll
    ; $iColor = Schriftfarbe (Standard = 0x000000, schwarz)
    ; $iSize = Größe der Schrift (Werte von 1 bis 7, Standard = 2)
    ; $iImgSize = Größe der Smilies (Standard = 19 pixel)
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s): bei Erfolg = 1
    ; bei Fehler = 0
    ; und @error = 1 ($ahChat ist kein Array)
    ; 2 ($ahChat besitzt nicht die richtigen Array-Dimensionen)
    ; 3 (Logfile konnte nicht geschrieben werden)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_SetData(ByRef $ahChat, $sMsg, $iColor = 0x000000, $iSize = 2, $sFont = "Arial", $iImgSize = 19, $fAppend = False)
    If Not IsArray($ahChat) Then Return SetError(1, 0, 0)
    If UBound($ahChat) <> 5 Then Return SetError(2, 0, 0)
    Local $hFile, $oBody
    $sMsg = StringRegExpReplace($sMsg, '(?s)<.*?>', '')
    $sMsg = StringRegExpReplace($sMsg, '(?s)(?i)\[hr\]', '<hr>')
    $sMsg = StringRegExpReplace($sMsg, '(?s)(?i)\[(\/*b|\/*i|\/*u)\]', '<$1>')
    $sMsg = StringRegExpReplace($sMsg, '(?s)(?i)\[(color=.+?)\](.*?)\[\/(color)\]', '<font $1>$2</font>')
    $sMsg = StringRegExpReplace($sMsg, '(?s)(?i)\[(size=.+?)\](.*?)\[\/(size)\]', '<font $1>$2</font>')
    $sMsg = StringRegExpReplace($sMsg, '(?s)(?i)\[(face=.+?)\](.*?)\[\/(face)\]', '<font $1>$2</font>')
    $sMsg = '<p><font color="#' & Hex($iColor, 6) & '" size="' & $iSize & '" face="' & $sFont & '">' & $sMsg & '</font></p>'
    $sMsg = StringReplace($sMsg, @CRLF, '<br>')
    $sMsg = _Chatbox_ConvertSmilies($sMsg, $ahChat[4], $iImgSize)
    $sMsg = _Chatbox_ConvertMailto($sMsg)
    $sMsg = _Chatbox_ConvertHyperlink($sMsg)
    $oBody = _IETagNameGetCollection($ahChat[0], 'body', 0)
    _IEDocInsertHTML($oBody, $sMsg)
    $oBody.scrollTop = 0x5FFFFFFF
    If $ahChat[3] <> '' Then
    $ahChat[2] = StringRegExpReplace($ahChat[2], '(?s)(.+<body.+?>.*)(</body>.+</html>)', '$1' & $sMsg & @CRLF & '$2')
    $hFile = FileOpen($ahChat[3], 2)
    If $hFile = -1 Then Return SetError(3, 0, 0)
    FileWrite($hFile, $ahChat[2])
    FileClose($hFile)
    EndIf
    Return 1
    EndFunc ;==>_Chatbox_SetData

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_ReadText($ahChat)
    ; Description:: Liest nur den Text aus dem HTML-Body aus
    ; Parameter(s): $ahChat = das Rückgabe-Array von _Chatbox_Create()
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s): Der Inhalt der Chatbox als Text (String)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_ReadText(ByRef $ahChat)
    Return _IEBodyReadText($ahChat[0])
    EndFunc ;==>_Chatbox_ReadText

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_ReadHTML($ahChat)
    ; Description:: Liest den HTML-Quelltext aus
    ; Parameter(s): $ahChat = das Rückgabe-Array von _Chatbox_Create()
    ; Requirement(s): #include <IE.au3>
    ; Return Value(s): Der Inhalt der Chatbox als HTML-Quelltext (String)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_ReadHTML(ByRef $ahChat)
    Return _IEDocReadHTML($ahChat[0])
    EndFunc ;==>_Chatbox_ReadHTML

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_ConvertSmilies($sMsg, $sImgPath, $iImgSize)
    ; Description:: wandelt Text-Smilies in PNG-Smilies um
    ; Parameter(s): $sMsg = die Textzeile mit den Text-Smilies
    ; mögliche Text-Smilies =
    ; :);):D:( :-/ :-o :-p :cry: :angry: :love:
    ; :mute: :cool: :shame: :sleep: :sick: :kiss: :yum: :wacko:
    ; $sImgPath = Verzeichnispfad zu den Smiley-PNGs, Standard: @ScriptDir & '\png\'
    ; $sImgSize = Größe der Smilies (Standard = 19 pixel)
    ; Requirement(s): ---
    ; Return Value(s): die Textzeile mit angepassten HTML-IMG-TAGs auf die Smilies
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_ConvertSmilies($sMsg, $sImgPath, $iImgSize)
    Local $sImgDim = ' width="' & $iImgSize & '" height="' & $iImgSize & '">'
    Local $aSmilies[18][2] = [ _
    [':-)', 'smile'],[';-)', 'hehe'],[':-D', 'haha'],[':-(', 'sad'],[':-/', 'hmm'], _
    [':-o', 'oh'],[':-p', 'grimace'],[':cry:', 'cry'],[':love:', 'love'],[':mute:', 'mute'], _
    [':angry:', 'angry'],[':cool:', 'cool'],[':shame:', 'shame'],[':sleep:', 'sleep'], _
    [':sick:', 'sick'],[':kiss:', 'kiss'],[':yum:', 'yum'],[':wacko:', 'wacko']]
    $sImgPath = StringReplace($sImgPath, '\', '/')
    For $i = 0 To UBound($aSmilies) - 1
    $sMsg = StringReplace($sMsg, $aSmilies[$i][0], ' <img src="file:///' & $sImgPath & $aSmilies[$i][1] & '.png"' & $sImgDim)
    Next
    Return $sMsg
    EndFunc ;==>_Chatbox_ConvertSmilies

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_ConvertMailto($sMsg)
    ; Description:: wandelt evtl. vorhandene Mailadressen in anklickbare Links um
    ; Parameter(s): $sMsg = die Textzeile
    ; Requirement(s): ---
    ; Return Value(s): die bearbeitete Textzeile
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_ConvertMailto($sMsg)
    Local $aReplace = StringRegExp($sMsg, '([a-zA-Z0-9\-.]+@[a-zA-Z0-9\-.]+\.[a-zA-Z0-9\-.]+)', 3)
    If Not IsArray($aReplace) Then Return $sMsg
    For $i = 0 To UBound($aReplace) - 1
    $sMsg = StringReplace($sMsg, $aReplace[$i], ' <a href="mailto:' & $aReplace[$i] & '">' & $aReplace[$i] & '</a>')
    Next
    Return $sMsg
    EndFunc ;==>_Chatbox_ConvertMailto

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_ConvertHyperlink($sMsg)
    ; Description:: wandelt evtl. vorhandene Hyperlinks in anklickbare Links um
    ; Parameter(s): $sMsg = die Textzeile
    ; Requirement(s): ---
    ; Return Value(s): die bearbeitete Textzeile
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_ConvertHyperlink($sMsg)
    Return StringRegExpReplace($sMsg, ' [http:\/\/]*([a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+\.[a-zA-Z0-9_\/\-\.\?&%=\+]+)', '<a href="http://$1" target="_blank">$1</a>')
    EndFunc ;==>_Chatbox_ConvertHyperlink

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _Chatbox_SmileyToText($hID[, $sImgPath][, $iLeft][, $iTop])
    ; Description:: Zeigt ein Fenster mit Smilies an und gibt den angeklickten
    ; Smiley als Text-Smiley zurück
    ; Parameter(s): $hID = GUI-Element, an das das Text-Smiley gesendet werden soll
    ; $sImgPath = Verzeichnispfad zu den Smiley-PNGs, Standard: @ScriptDir & '\png\'
    ; $iLeft, $iTop = Position des Fensters (Standard: zentriert)
    ; $hParent = Das Smiley-Fenster wird ein Child hiervon (Parent wird solange disabled)
    ; Requirement(s): #include <GUIConstantsEx.au3>
    ; #include <File.au3>
    ; #include <GDIPlus.au3>
    ; Return Value(s): bei Erfolg = Text-Smiley
    ; bei Fehler = wird Null zurückgegeben
    ; und @error = 1 ($hID ist kein GUI-Element)
    ; 2 (Pfad zu den Smilies falsch)
    ; 3 (es fehlen Smilies)
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _Chatbox_SmileyToText($hID, $sImgPath = '', $iLeft = -1, $iTop = -1, $hParent = '')
    Local $aSmilies[18][2] = [ _
    [' :-)', 'smile'],[' ;-)', 'hehe'],[' :-D', 'haha'],[' :-(', 'sad'],[' :-/', 'hmm'], _
    [' :-o', 'oh'],[' :-p', 'grimace'],[' :cry:', 'cry'],[' :love:', 'love'],[' :mute:', 'mute'], _
    [' :angry:', 'angry'],[' :cool:', 'cool'],[' :shame:', 'shame'],[' :sleep:', 'sleep'], _
    [' :sick:', 'sick'],[':kiss:', 'kiss'],[':yum:', 'yum'],[':wacko:', 'wacko']]
    Local $iWidth, $iSmiley, $aInfo, $sReturn = ''
    If Not GUICtrlGetHandle($hID) Then Return SetError(1, 0, 0)
    If $sImgPath = '' Then $sImgPath = @ScriptDir & '\png\'
    $_Chatbox_aSmileyFiles = _FileListToArray($sImgPath, '*.png', 1)
    If @error Then Return SetError(2, 0, 0)
    If $_Chatbox_aSmileyFiles[0] <> UBound($aSmilies) Then Return SetError(3, 0, 0)
    Global $_Chatbox_ahImage[$_Chatbox_aSmileyFiles[0]], $_Chatbox_ahDummy = $_Chatbox_ahImage
    Local $iOld = Opt('GUIOnEventMode', 0)
    _GDIPlus_Startup()
    $iWidth = 16 + $_Chatbox_aSmileyFiles[0] * 27
    $_Chatbox_hChild = GUICreate('SmileyToText', $iWidth, 64, $iLeft, $iTop, 0x00080000, Default, $hParent)
    GUISetIcon($sImgPath & 'prog.ico')
    GUISetBkColor(0xBBBBBB)
    $_Chatbox_hGraphic = _GDIPlus_GraphicsCreateFromHWND($_Chatbox_hChild)
    GUISetState()
    If $hParent <> '' Then WinSetState($hParent, '', @SW_DISABLE)
    GUIRegisterMsg($WM_PAINT, '__Chatbox_WM_PAINT')
    For $i = 1 To $_Chatbox_aSmileyFiles[0]
    $_Chatbox_ahDummy[$i - 1] = GUICtrlCreateLabel('', 8 + ($i - 1) * 27, 8, 19, 19)
    $_Chatbox_ahImage[$i - 1] = _GDIPlus_ImageLoadFromFile($sImgPath & $_Chatbox_aSmileyFiles[$i])
    _GDIPlus_GraphicsDrawImage($_Chatbox_hGraphic, $_Chatbox_ahImage[$i - 1], 8 + ($i - 1) * 27, 8)
    Next
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    $sReturn = ''
    ExitLoop
    Case $GUI_EVENT_PRIMARYUP
    $aInfo = GUIGetCursorInfo($_Chatbox_hChild)
    $iSmiley = $aInfo[4] - $_Chatbox_ahDummy[0]
    If $iSmiley >= 0 Then
    For $i = 0 To UBound($aSmilies) - 1
    If StringInStr($_Chatbox_aSmileyFiles[$iSmiley + 1], $aSmilies[$i][1]) Then
    $sReturn = $aSmilies[$i][0]
    GUICtrlSetData($hID, $sReturn, 1)
    ExitLoop 2
    EndIf
    Next
    EndIf
    EndSwitch
    WEnd
    For $i = 1 To $_Chatbox_aSmileyFiles[0]
    _GDIPlus_ImageDispose($_Chatbox_ahImage[$i - 1])
    Next
    _GDIPlus_GraphicsDispose($_Chatbox_hGraphic)
    _GDIPlus_Shutdown()
    GUIDelete($_Chatbox_hChild)
    If $hParent <> '' Then WinSetState($hParent, '', @SW_ENABLE)
    Opt('GUIOnEventMode', $iOld)
    EndFunc ;==>_Chatbox_SmileyToText

    [/autoit] [autoit][/autoit] [autoit]

    Func __Chatbox_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($_Chatbox_hChild, 0, 0, $RDW_UPDATENOW)
    For $i = 1 To $_Chatbox_aSmileyFiles[0]
    _GDIPlus_GraphicsDrawImage($_Chatbox_hGraphic, $_Chatbox_ahImage[$i - 1], 8 + ($i - 1) * 27, 8)
    Next
    _WinAPI_RedrawWindow($_Chatbox_hChild, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>__Chatbox_WM_PAINT

    [/autoit]
    Beispiel
    [autoit]


    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Date.au3>
    #include "Chatbox.au3"
    $hGui = GUICreate('Chatbox Beispiel', 600, 640, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
    $hChat = _Chatbox_Create($hGui, 10, 10, 580, 420, 0xffffaa, @ScriptDir & '\Chatlog.html')
    GUICtrlCreateLabel('Ab hier können zwei Benutzereingaben simuliert werden:', 10, 450, 580, 20)
    GUICtrlSetFont(-1, 12)
    GUICtrlCreateLabel('User1', 10, 485, 60, 20)
    $hSmiley1 = GUICtrlCreateButton('Smiley auswählen', 70, 480, 100, 18)
    $hUser1 = GUICtrlCreateInput('', 10, 500, 540, 20)
    $hEnter1 = GUICtrlCreateButton('send', 550, 500, 40, 20)
    GUICtrlCreateLabel('User2', 10, 545, 60, 20)
    $hSmiley2 = GUICtrlCreateButton('Smiley auswählen', 70, 540, 100, 18)
    $hUser2 = GUICtrlCreateInput('', 10, 560, 540, 20)
    $hEnter2 = GUICtrlCreateButton('send', 550, 560, 40, 20)
    $hReadText = GUICtrlCreateButton('Text auslesen', 190, 600, 100, 25)
    $hReadHTML = GUICtrlCreateButton('HTML auslesen', 310, 600, 100, 25)
    GUISetState()
    _Chatbox_SetData($hChat, 'BB-Code-Unterstützung: b, i, u, hr, size und color', 0x000000, 5)
    _Chatbox_SetData($hChat, 'fett, kursiv und unterstrichen ist möglich', 0x000088, 4)
    _Chatbox_SetData($hChat, 'Normale Schrift und [size="6"]große Schrift[/size] und wieder normal', 0x880000, 3)
    _Chatbox_SetData($hChat, 'man kann den Text auch farbig gestalten', 0x000000, 4)
    _Chatbox_SetData($hChat, 'Hyperlinks: http://www.blabla.de und EMail-Adressen: [email='test@blabla.de'][/email] sind anklickbar', 0x000000, 3)
    _Chatbox_SetData($hChat, 'Die Schriftart lässt sich ändern. Diese Zeile in "Times New Roman"', 0x000000, 4, 'Times New Roman')
    _Chatbox_SetData($hChat, 'Die Schriftart lässt sich mit face auch [face="Arial"]innerhalb der Zeile[/face] ändern.', 0x0000FF, 4, 'Times New Roman')
    _Chatbox_SetData($hChat, 'Horizontale Linien sind mit dem BB-Code "hr" möglich:[hr]', 0x000000, 3)
    _Chatbox_SetData($hChat, 'Text-Smilies werden in PNG-Smilies umgewandelt:', 0x000000, 3)
    _Chatbox_SetData($hChat, ':-) ;) :D :-/ :( :-o :-p :angry: :cool: :cry: :kiss: :love: :mute: :shame: :sick: :sleep: :wacko: :yum:', 0x000000, 5, 'Arial', 19)
    GUICtrlSetState($hUser1, $GUI_FOCUS)
    GUICtrlSetState($hEnter1, $GUI_DEFBUTTON)

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hSmiley1
    _Chatbox_SmileyToText($hUser1, '', -1, -1, $hGui)
    GUICtrlSetState($hUser1, $GUI_FOCUS)
    GUICtrlSetState($hEnter1, $GUI_DEFBUTTON)
    Case $hSmiley2
    _Chatbox_SmileyToText($hUser2, '', -1, -1, $hGui)
    GUICtrlSetState($hUser2, $GUI_FOCUS)
    GUICtrlSetState($hEnter2, $GUI_DEFBUTTON)
    Case $hEnter1
    _Chatbox_SetData($hChat, '[' & _Now() & '] User1: ' & GUICtrlRead($hUser1), 0xff0000, 2)
    GUICtrlSetData($hUser1, '')
    GUICtrlSetState($hUser1, $GUI_FOCUS)
    GUICtrlSetState($hEnter1, $GUI_DEFBUTTON)
    Case $hEnter2
    _Chatbox_SetData($hChat, '[' & _Now() & '] User2: ' & GUICtrlRead($hUser2), 0x0000ff, 2)
    GUICtrlSetData($hUser2, '')
    GUICtrlSetState($hUser2, $GUI_FOCUS)
    GUICtrlSetState($hEnter2, $GUI_DEFBUTTON)
    Case $hReadText
    MsgBox(0, 'Chatbox als Text', _Chatbox_ReadText($hChat))
    Case $hReadHTML
    MsgBox(0, 'Chatbox als HTML', _Chatbox_ReadHTML($hChat))
    EndSwitch
    WEnd

    [/autoit]

    Screenshot:
    autoit.de/wcf/attachment/6815/

    UDF, Beispielskript und Smilies im ZIP-Archiv (Anhang).

  • habs zwar noch nicht getestet, aber das hört sich mal hamergeil an :)
    Ich habe übrigens vor, demnächst ein ICQ-ähnliches Programm zu entwickeln, da kann ich das perfekt tgebrauchen.
    (Natürlich wirst du dann erwähnt)
    Ich teste es gleich :)

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
  • Habs mir angeguggt :)
    HAMMER
    Das mit den Smileys sieht richtig gut aus und der Hintergrung ebenfalls :)
    :thumbup:
    Ich hoff du erweiterst das noch! :D

    [autoit]


    While $Life = True
    $nMSG = BrainGetMsg()
    Switch $nMSG
    Case $Idea
    _Convert_Idea2Code()
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Freut mich, dass Dir die UDF gefällt. :)

    Ich habe die UDF jetzt noch erweitert. Es gibt noch ein paar mehr Smilies. Außerdem werden jetzt Mailadressen und Hyperlinks in anklickbare Links umgewandelt.
    Das Beispielskript habe ich auch noch ausführlicher gestaltet, damit man die Möglichkeiten besser sehen kann (siehe Screenshot).

  • also erst mal sau gut gemacht:P
    klasse sache, gut gebrauchbar für eig alle chat usw..

    verbesserungen:
    <div style="position:absolute; top:5px; left:10px; border:2px dotted #000000;">sooooo viel style</div>
    positionsangaben un rahmen etc mit stylesheets sind noch möglich.. vll zumindest die positionangaben in der _Chatbox _SetData() löschenlassen..;)


    greetz syne

  • Wenn ich mal Zeit habe, dann werde ich alle User UDFs + AutoIt+Scite+Deutsche Hilfe zusammenpacken und hochladen, ich finde es mühselig immer die UDFs runterladen zu müssen oder wenn ein Update kommt oder sonstiges... alles immer zusammen tragen zu müssen.

  • Hi,

    ich habe mir deine UDF man angeschaut und finde
    die echt super.
    Was du vielleicht noch verbessern könntest, ist das
    mit den Links. Wenn man einen eingibt wird nur
    "www.xxx.xx" oder "http://www.xxx.xx" in einen Hyperlink umge-
    wandelt, jedoch nicht "http://xxx.xx".
    Das würde ich noch ändern. :P

    Sonst eine super Sache!


    MfG
    qixx

  • Die UDF is dir gut gelungen.
    Du könntest daraus ja mal nen Chat Clienten+Server machen, damit man über Internet chatten kann, weil ich nicht mit mir alleine chatten will :D
    Aber sonst, tolle UDF :thumbup:

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Wenn ich die Zeit dazu habe, wird es auch mal ein Chatprogramm mit dieser UDF geben.

    Ich schreibe gerade einen Chat und benutze
    dabei deine UDF! :)
    Klappt echt super!
    Den Chat werde ich bei Gelegenheit hier auch
    mal vorstellen. ;)

    Achja, kleiner Fehler noch mit den Smileys.
    Wenn ein Smiley am Anfang vom Text geschrieben
    wird, zeigt der Chat nur den Text und nicht das Bild
    an.


    MfG
    qixx