1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • feld anklicken?

    • Oscar
    • 3. Dezember 2009 um 19:39

    Leute, die so sparsam mit Informationen zu dem Verwendungszweck umgehen, wollen sowieso nur einen Bot schreiben und dazu gibt es hier keinen Support.

    Also entweder programmierst Du etwas vernünftiges oder Du rückst mit mehr Informationen raus. ;)

  • Chatbox-UDF

    • Oscar
    • 3. Dezember 2009 um 00:15

    Ok, ihr habt mich überzeugt. Man kann mit den HTML-TAGs zuviel Unsinn anstellen. Die werden jetzt ausgefiltert und stattdessen werden jetzt BB-Codes unterstützt.

    Neue Version in Post#1.

  • Chatbox-UDF

    • Oscar
    • 2. Dezember 2009 um 19:31

    Es gibt eine neue Version (siehe Post#1).

    Hinzugekommen ist eine Funktion: _Chatbox_SmileyToText() = Zeigt ein Fenster mit Smilies an und gibt den angeklickten Smiley als Text-Smiley zurück
    und die Smilies habe ich noch etwas verändert. Außerdem sind es jetzt 18 Smilies.

  • Desktop mit AutoIT bereinigen

    • Oscar
    • 2. Dezember 2009 um 15:44

    Wenn Du Dateien nach einem bestimmten Erstellungsdatum löschen lassen willst, dann vielleicht so:

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    Global $sReturnDate = '20091101000000' ; Alle Dateien, deren Erstellungsdatum nach diesem Datum (YYYYMMDDhhmmss) liegt, werden gelöscht
    Global $sDate, $aDesktopUser, $aDesktopAll

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

    $aDesktopUser = _FileListToArray(@DesktopDir, '*', 1)
    For $i = 1 To $aDesktopUser[0]
    $sDate = FileGetTime(@DesktopDir & '\' & $aDesktopUser[$i], 1, 1)
    If Not @error Then
    If $sDate > $sReturnDate Then
    ; die folgende Zeile erst auskommentieren, wenn die Consolen-Ausgabe passt!
    ;~ FileDelete(@DesktopDir & '\' & $aDesktopUser[$i])
    ConsoleWrite('Datei gelöscht: ' & @DesktopDir & '\' & $aDesktopUser[$i] & @CR)
    EndIf
    EndIf
    Next

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

    $aDesktopAll = _FileListToArray(@DesktopCommonDir, '*', 1)
    For $i = 1 To $aDesktopAll[0]
    $sDate = FileGetTime(@DesktopCommonDir & '\' & $aDesktopAll[$i], 1, 1)
    If Not @error Then
    If $sDate > $sReturnDate Then
    ; die folgende Zeile erst auskommentieren, wenn die Consolen-Ausgabe passt!
    ;~ FileDelete(@DesktopCommonDir & '\' & $aDesktopAll[$i])
    ConsoleWrite('Datei gelöscht: ' & @DesktopCommonDir & '\' & $aDesktopAll[$i] & @CR)
    EndIf
    EndIf
    Next

    [/autoit]


    Bitte die Kommentare beachten!

  • Desktop mit AutoIT bereinigen

    • Oscar
    • 2. Dezember 2009 um 13:21

    Verstehe das Problem nicht...
    Kannst Du doch mit einem AutoIt-Skript machen?! :huh:

  • HTML-Seite nach unten scrollen

    • Oscar
    • 2. Dezember 2009 um 13:20

    Danke! Da werde ich mich mal durchwühlen. Mal sehen, was es da zu entdecken gibt... :)

  • HTML-Seite nach unten scrollen

    • Oscar
    • 2. Dezember 2009 um 12:11

    Ich hatte es durch ausprobieren schon rausbekommen, trotzdem danke.
    Es ist auch nicht so schlimm, dass keine größeren Zahlen zulässig sind, weil ich den Befehl ja bei jeder Zeile aufrufe. Von daher würde auch 16 oder so (je nach Zeilenhöhe) ausreichen.

    Kennst Du eine Seite, wo alle Methoden und Eigenschaften des IE-Objects aufgeführt sind?
    Ich habe schon gegoogelt, aber da findet man sehr viel, nur nicht das, was man sucht... :S

  • Desktop mit AutoIT bereinigen

    • Oscar
    • 2. Dezember 2009 um 11:32

    Das mit den Desktopsymbolen kannst Du doch so machen, dass Du vorher einen Snapshot erstellst und hinterher alles löschen und Snapshot wiederherstellen.

    Snapshot mit DirCopy von den Verzeichnissen @DesktopDir (des Users) und @DesktopCommonDir (all).

  • Werte aus Zeile auslesen und speichern

    • Oscar
    • 2. Dezember 2009 um 09:43

    Was für eine Ini? Vorher? Hinterher?

    Beschreib mal genau. Wie sieht die Datei vorher aus (am besten eine Beispieldatei posten) und was soll dann rauskommen?

  • Werte aus Zeile auslesen und speichern

    • Oscar
    • 2. Dezember 2009 um 07:37

    Wenn die Datei immer so aufgebaut ist, dann so:

    [autoit]


    #include <Array.au3>
    $text = '27x frettchen 84x bälle 39x hunde 2x katzen Summe: 434,40 euro'
    $aWare = StringRegExp($text, '(\d+x .+?) ', 3)
    $sSumme = StringRegExpReplace($text, '.+(Summe: .+ euro)', '$1')
    _ArrayDisplay($aWare)
    MsgBox(0, 'Summe', $sSumme)

    [/autoit]
  • Chatbox-UDF

    • Oscar
    • 2. Dezember 2009 um 07:27

    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).

  • Chatbox-UDF

    • Oscar
    • 1. Dezember 2009 um 21:55

    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:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

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

    Dateien

    Chatbox-Screenshot.png 66,31 kB – 0 Downloads Chatbox.zip 16,53 kB – 772 Downloads
  • Kontextmenü bei ListView

    • Oscar
    • 30. November 2009 um 18:17

    In der aufgerufenen Funktion einfach mit _GUICtrlListView_GetSelectionMark den markierten Eintrag auslesen.

  • Teilstring bis bzw. ab einem bestimmten Zeichen

    • Oscar
    • 30. November 2009 um 18:10

    Ach, es geht schon ohne Arrays:

    [autoit]


    $Text = "Text erster Teil*der zweite Teil"
    MsgBox(0, 'Erster Teil', StringLeft($Text, StringInStr($Text, '*') - 1))
    MsgBox(0, 'Zweiter Teil', StringMid($Text, StringInStr($Text, '*') + 1))

    [/autoit]
  • Autoit Frage

    • Oscar
    • 30. November 2009 um 18:07

    Dein Prozessor kann auch mit C++ nichts anfangen. ;)

  • Blutiger Anfänger

    • Oscar
    • 30. November 2009 um 17:53

    Wie willst Du etwas lernen, wenn andere das für Dich schreiben?
    Setzt Dich hin, nimm die Hilfe, schau unter "While...WEnd" für die Endlosschleife, "Sleep" für das warten und "Send" zum senden der Tasten.
    Dann kombinierst Du das Ganze und startest das Script. SciTE gibt Dir dann schon eine Fehlermeldung aus, wenn Du irgendwas falsch eingegeben hast. ;)

    Edit: Zu langsam... :huh: Ich habe den Thread aber mal nach "Hilfe & Unterstützung" verschoben.

  • HTML-Seite nach unten scrollen

    • Oscar
    • 30. November 2009 um 17:42

    Genial! Funktioniert!
    Vielen Dank!
    Jetzt kann ich weitermachen... :)

    Edit: Gibt es eine Erklärung zu der Hexzahl "0x5FFFFFFF"? Wofür steht die Zahl?

  • HTML-Seite nach unten scrollen

    • Oscar
    • 30. November 2009 um 04:40

    Vielleicht sollte ich das Problem ausführlicher beschreiben.
    Ich schreibe gerade an einer Chatbox-UDF (noch lange nicht fertig) und mein Problem ist, dass der Inhalt immer nach unten gescrollt werden soll.
    Hier mal ein Beispielscript:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    $hGui = GUICreate('Chatbox Beispiel', 400, 600)
    $hChat = _Chatbox_Create($hGui, 10, 10, 380, 450, 0xffffaa)
    GUICtrlCreateLabel('User1', 10, 480, 350, 20)
    $hUser1 = GUICtrlCreateInput('', 10, 500, 350, 20)
    GUICtrlCreateLabel('User2', 10, 540, 350, 20)
    $hUser2 = GUICtrlCreateInput('', 10, 560, 350, 20)
    GUISetState()
    For $i = 0 To 15
    _Chatbox_SetData($hChat, 'User1: blabla ' & Random(1000, 9999, 1), 0xff0000, 2)
    _Chatbox_SetData($hChat, 'User2: blubblub ' & Random(1000, 9999, 1), 0x0000ff, 2)
    Next
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hUser1
    _Chatbox_SetData($hChat, 'User1: ' & GUICtrlRead($hUser1), 0xff0000, 2)
    GUICtrlSetData($hUser1, '')
    GUICtrlSetState($hUser1, $GUI_FOCUS)
    Case $hUser2
    _Chatbox_SetData($hChat, 'User2: ' & GUICtrlRead($hUser2), 0x0000ff, 2)
    GUICtrlSetData($hUser2, '')
    GUICtrlSetState($hUser2, $GUI_FOCUS)
    EndSwitch
    WEnd

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

    Func _Chatbox_Create($hWnd, $iLeft, $iTop, $iWidth, $iHeight, $iBgColor = 0xffffff)
    Local $ahChat[3], $sTempFile, $oBody
    $ahChat[0] = _IECreateEmbedded()
    If @error Then Return SetError(1, 0, 0)
    GUISwitch($hWnd)
    $ahChat[1] = GUICtrlCreateObj($ahChat[0], $iLeft, $iTop, $iWidth, $iHeight)
    If $ahChat[1] = 0 Then Return SetError(2, 0, 0)
    $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 & '<body>' & @CRLF & '</body>' & @CRLF & '</html>'
    $sTempFile = @TempDir & '\ChatboxTemp.html'
    $hFile = FileOpen($sTempFile, 2)
    FileWrite($hFile, $ahChat[2])
    FileClose($hFile)
    _IENavigate($ahChat[0], $sTempFile)
    Return $ahChat
    EndFunc

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

    Func _Chatbox_SetData(ByRef $ahChat, $sMsg, $iColor, $iSize = 2)
    If Not IsArray($ahChat) Then Return SetError(1, 0, 0)
    If UBound($ahChat) <> 3 Then Return SetError(2, 0, 0)
    Local $sTempFile, $hFile, $oBody
    $sMsg = '<p><font color="#' & Hex($iColor, 6) & '" size="' & $iSize & '">' & $sMsg & '</font></p>'
    $sMsg = StringReplace($sMsg, @CRLF, '<br>')
    ;~ $ahChat[2] = StringRegExpReplace($ahChat[2], '(?s)(.+<body>.*)(</body>.+</html>)', '$1' & $sMsg & @CRLF & '$2')
    $oBody = _IETagNameGetCollection($ahChat[0], 'body', 0)
    _IEDocInsertHTML($oBody, $sMsg)
    ;~ $sTempFile = @TempDir & '\ChatboxTemp.html'
    ;~ $hFile = FileOpen($sTempFile, 2)
    ;~ FileWrite($hFile, $ahChat[2])
    ;~ FileClose($hFile)
    ;~ _IENavigate($ahChat[0], $sTempFile)
    Return 1
    EndFunc

    [/autoit]
  • HTML-Seite nach unten scrollen

    • Oscar
    • 29. November 2009 um 20:31

    Ich brauche mal Hilfe von jemanden mit HTML/CSS Erfahrung.
    Ich möchte, dass der Inhalt dieser Seite ganz unten auf der Seite angezeigt wird.

    Spoiler anzeigen
    HTML
    <html>
    <head>
    <title>Chatbox</title>
    <style type="text/css">body { background-color:#FFFFAA; padding:0px; margin:4px; } p { margin:4px; }</style>
    </head>
    <body>
    <p><font color="#FF0000" size="2">User1: Das ist ein Test</font></p>
    <p><font color="#0000FF" size="2">User2: Und noch ein anderer Text</font></p>
    </body>
    </html>


    Vor dem abschließenden </body> werden dann immer neue Zeilen eingefügt. Diese neue Zeile soll dann wieder ganz unten angezeigt werden. Der Rest soll dann bei zu vielen Zeilen nach oben wegscrollen.
    Gibt's da irgendein CSS- oder HTML-Befehl für?
    Zur Not auch Javascript. Wobei ich das vermeiden möchte.

  • Simpler Blöder Fehler

    • Oscar
    • 29. November 2009 um 16:19

    Dann teste vor dem Aufruf, ob es die Datei gibt (FileExist).

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™