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. ![]()
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. ![]()
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.
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.
Wenn Du Dateien nach einem bestimmten Erstellungsdatum löschen lassen willst, dann vielleicht so:
#include <File.au3>
Global $sReturnDate = '20091101000000' ; Alle Dateien, deren Erstellungsdatum nach diesem Datum (YYYYMMDDhhmmss) liegt, werden gelöscht
Global $sDate, $aDesktopUser, $aDesktopAll
$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
$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
Bitte die Kommentare beachten!
Verstehe das Problem nicht...
Kannst Du doch mit einem AutoIt-Skript machen?! ![]()
Danke! Da werde ich mich mal durchwühlen. Mal sehen, was es da zu entdecken gibt... ![]()
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... ![]()
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).
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?
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)
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).
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
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]
#include-once
#include <GUIConstantsEx.au3>
#include <File.au3>
#include <GDIPlus.au3>
#include <IE.au3>
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
;===============================================================================
;===============================================================================
; 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
;===============================================================================
; 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
;===============================================================================
; 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
;===============================================================================
; 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
;===============================================================================
; 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 =
; ![]()
![]()
![]()
:-/ :-o :-p :cry: :angry: ![]()
; :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'],[':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
;===============================================================================
; 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
;===============================================================================
; 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
;===============================================================================
; 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'],[' :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, ![]()
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
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, ![]()
Next
_WinAPI_RedrawWindow($_Chatbox_hChild, 0, 0, $RDW_VALIDATE)
Return $GUI_RUNDEFMSG
EndFunc ;==>__Chatbox_WM_PAINT
#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, ':-)
:-/
:-o :-p :angry: :cool: :cry: :kiss:
:mute: :shame: :sick: :sleep: :wacko: :yum:', 0x000000, 5, 'Arial', 19)
GUICtrlSetState($hUser1, $GUI_FOCUS)
GUICtrlSetState($hEnter1, $GUI_DEFBUTTON)
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
Screenshot:
UDF, Beispielskript und Smilies im ZIP-Archiv (Anhang).
In der aufgerufenen Funktion einfach mit _GUICtrlListView_GetSelectionMark den markierten Eintrag auslesen.
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))
Dein Prozessor kann auch mit C++ nichts anfangen. ![]()
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...
Ich habe den Thread aber mal nach "Hilfe & Unterstützung" verschoben.
Genial! Funktioniert!
Vielen Dank!
Jetzt kann ich weitermachen... ![]()
Edit: Gibt es eine Erklärung zu der Hexzahl "0x5FFFFFFF"? Wofür steht die Zahl?
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:
#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
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
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
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.
<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.
Dann teste vor dem Aufruf, ob es die Datei gibt (FileExist).