Is supa gewroden =)
Shoutbox Chat
-
-
Update:
Mit Freunden wird es jetzt auch richtig angezeigt.
Zitataußerdem Bug: das "TopMost"-Häkchen ist zu Beginn aktiviert, aber das fenster ist noch nicht TopMost.
Hm, ich grig den Bug irgendwie nicht.
-
Update:
Wenn der Shoutbox Client minimiert ist werdet ihr per TrayTip benachrichtigt wenn jemand etwas geschrieben hat und von wem.
-
hmm..
Ich weiß is veraltet, aber ich wollte mich einfach bedanken xD
Wollte so etwas schon fast selber schreiben, war aber dann zu beschäftigt. -
Langeweile pur.
Kleine Veränderung/Verbesserung im Anhang.
Download: autoit.de/wcf/attachment/6948/Änderungen:
- WinRunTrans eingebaut
Ich liebe den Effect einfach- GUI fast komplett umgestellt
Ich sag ja, langeweile- GUICtrlSet(Bk)Color eingefügt
Wichtig, da Nutzer mit Custom VS sonst z.b.
die Schrift im Edit Feld nicht lesen können.- Kleinigkeiten
Wie übersicht (Region) etc. -
schöner effekt
aber:
[Blockierte Grafik: http://pixload.org/kostenloser/bilder/upload/one/click/hosting/images/error.jpg] -
Ich gucks mir eben nochmal an,
bei mir läufts fehlerfrei o_ODas wundert mich grad etwas.
Edit:
Zitat>"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /prod /AU3Check /in "D:\Desktop-Ordner\Autolt V3\Tools\ShoutBox\ShoutBox.au3"
+>11:58:14 Starting AutoIt3Wrapper v.2.0.0.3 Environment(Language:0407 Keyboard:00000407 OS:WIN_XP/Service Pack 2 CPU:X86 OS:X86)
>Running AU3Check (1.54.14.0) from:C:\Programme\AutoIt3
+>11:58:15 AU3Check ended.rc:0
+>11:58:15 AutoIt3Wrapper Finished
>Exit code: 0 Time: 0.874Läuft bei mir fehlerfrei.
Und auch der Syntax Check sagt nichtsEdit 2:
Habs, ich fix das ebenEdit 3:
ZitatD:\Desktop-Ordner\Autolt V3\Tools\ShoutBox\ShoutBox.au3(15,36) : ERROR: Opt() called with illegal argument 1: "OnExitFunc"
Opt("OnExitFunc", "CloseAllHandles")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\Desktop-Ordner\Autolt V3\Tools\ShoutBox\ShoutBox.au3(16,37) : ERROR: AdlibEnable(): undefined function.
AdlibEnable("_GetNewestPostAd", 5000)Das wundert mich grad etwas.
Er meckert an "OnExitFunc und AdLibEnable o_OEdit 4:
Laut neuster Beta sollte es so laufen:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;#BETA
#include <ButtonConstants.au3>
#include <WinHTTP.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <String.au3>
#include <Date.au3>
#include <IE.au3>
#include <Array.au3>
#include <WinAPI.au3>#Region StartUp
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("CloseAllHandles")
AdlibRegister("_GetNewestPostAd", 5000)
Global $__LASTMESSAGE = 0, $hw_connect, $hw_open, $LogOutLink = ""
Global $_LOGIN_Cookie = IniRead("ShoutBoxClient.ini", "Data", "LogInData", "")
DirCreate(@ScriptDir & "\ShoutBoxLog\")
#EndRegion StartUp#Region GUI
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIResizeMode", 802)
$MainGUI = GUICreate("Shoutbox Chat", 700, 380, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPCHILDREN))
$oIE = _IECreateEmbedded()
$ChatAnzeige = GUICtrlCreateObj($oIE, 0, 0, 550, 300)$Benutzername = GUICtrlCreateInput(IniRead("ShoutBoxClient.ini", "Data", "User", ""), 574, 5, 120, 20)
[/autoit] [autoit][/autoit] [autoit]
$Passwort = GUICtrlCreateInput("", 574, 25, 120, 20, $ES_PASSWORD)
$Einloggen = GUICtrlCreateButton("Einloggen", 574, 45, 120, 24)
$Ausloggen = GUICtrlCreateButton("Ausloggen", 574, 45, 120, 24)
GUICtrlSetState($Ausloggen, $GUI_HIDE)$Absenden = GUICtrlCreateButton("&Absenden", 440, 300, 110, 24)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Absenden, $GUI_DISABLE)
$Aktualisieren = GUICtrlCreateButton("Aktualisieren (F5)", 440, 328, 110, 24)
$Speichern = GUICtrlCreateButton("Speichern", 440, 356, 110, 24)$Text = GUICtrlCreateEdit("", 0, 300, 440, 80, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
[/autoit] [autoit][/autoit] [autoit]$btnExpandHide = GUICtrlCreateButton("<", 550, 0, 19, 380)
[/autoit] [autoit][/autoit] [autoit]
$WhisperList = GUICtrlCreateList("", 569, 71, 131, 309)
$TopMost = GUICtrlCreateCheckbox("TopMost", 599, 365, 131, 15)If IniRead("ShoutBoxClient.ini", "Data", "OnTop", "") = "True" Then
[/autoit] [autoit][/autoit] [autoit]
WinSetOnTop($MainGUI, "", 1)
GUICtrlSetState($TopMost, $GUI_CHECKED)
EndIf
If IniRead("ShoutBoxClient.ini", "Data", "ShowOnline", "True") = "False" Then
_ShowOnlineList(False)
EndIf;Color/Bk Settings
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Benutzername, 0xF2F6FA)
GUICtrlSetColor($Benutzername, 0x000000)
GUICtrlSetBkColor($Passwort, 0xF2F6FA)
GUICtrlSetColor($Passwort, 0x000000)
GUICtrlSetBkColor($Text, 0xF2F6FA)
GUICtrlSetColor($Text, 0x000000)
GUICtrlSetBkColor($WhisperList, 0xF2F6FA)
GUICtrlSetColor($WhisperList, 0x000000)WinRunTrans($MainGUI, "Show")
[/autoit] [autoit][/autoit] [autoit]
#EndRegion GUI#Region Settings
[/autoit] [autoit][/autoit] [autoit]
$ClearDUMMY = GUICtrlCreateDummy()
Local $Accels[4][2] = [["^{F5}", $Aktualisieren],["{F5}", $Aktualisieren],["{ENTER}", $Absenden],["{ESC}", $ClearDUMMY]]
GUISetAccelerators($Accels)Global $rLastText = ""
[/autoit] [autoit][/autoit] [autoit]
Global $hw_open = _WinHttpOpen("AutoIt ShoutBoxClient")
Global $hw_connect = _WinHttpConnect($hw_open, "autoit.de")_IENavigate($oIE, "about:blank")
[/autoit] [autoit][/autoit] [autoit]
_IEDocWriteHTML($oIE, '<html><head><script type="text/javascript">document.oncontextmenu = function(e){return false;};</script><base href="http://autoit.de/"><link rel="stylesheet" type="text/css" media="screen" href="wcf/style/style-3.css" /></head><body style="margin:0px; padding:0px;"><div class="shoutboxMessageFrame shoutboxFrameInner container-2" style="margin:0px; padding:0px; position:absolute; top:0px; left:0px; width:100%; height:100%;"><div id="shoutboxcontent" class="shoutboxMessageFrame shoutboxFrameInner container-2 smallFont" style="text-align:left; margin:0px; padding:0px;"></div></div></body></html>');
Global $oShoutBox = _IEGetObjById($oIE, "shoutboxcontent")_TryLogInCookie()
[/autoit] [autoit][/autoit] [autoit]
_GetNewestPost()
$FirstStart = False
#EndRegion Settings#Region Loop
[/autoit] [autoit][/autoit] [autoit]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Einloggen
$u = GUICtrlRead($Benutzername)
$p = GUICtrlRead($Passwort)
_Login($u, $p)
Case $Ausloggen
_LogOut()
Case $Absenden
If BitAND(GUICtrlGetState($Absenden), $GUI_DISABLE) = $GUI_DISABLE Then
$u = GUICtrlRead($Benutzername)
$p = GUICtrlRead($Passwort)
_Login($u, $p)
Else
$rText = GUICtrlRead($Text)
If $rText <> "" And $rText <> $rLastText Then
$rLastText = StringRegExpReplace($rText, "\A(\/w)+", "")
GUICtrlSetData($Text, "")
GUICtrlSetData($WhisperList, "-------------")
_Nachricht($rText)
ControlFocus($MainGUI, "", $Text)
EndIf
EndIf
Case $Aktualisieren
_GetNewestPost()
Case $ClearDUMMY
GUICtrlSetData($WhisperList, "-------------")
GUICtrlSetData($Text, "")
Case $Speichern
_SaveLog()
Case $WhisperList
$WTarget = GUICtrlRead($WhisperList)
If $WTarget = "-------------" Or $WTarget = "" Then
GUICtrlSetData($Text, StringRegExpReplace(GUICtrlRead($Text), '\A\/w ".*?"\h?', ""))
;~ GUICtrlSetData($Text, StringRegExpReplace(GUICtrlRead($Text),'\A".*?"\h?',""))
Else
GUICtrlSetData($Text, '/w "' & $WTarget & '" ' & StringRegExpReplace(GUICtrlRead($Text), '\A\/w ".*?"\h?', ""))
;~ GUICtrlSetData($Text, '"' & $WTarget&'" '&StringRegExpReplace(GUICtrlRead($Text),'\A".*?"\h?',""))
EndIf
Case $TopMost
Local $Attrib = BitAND(GUICtrlRead($TopMost), $GUI_CHECKED) = $GUI_CHECKED
IniWrite("ShoutBoxClient.ini", "Data", "OnTop", $Attrib)
WinSetOnTop($MainGUI, "", $Attrib)
Case $btnExpandHide
Switch GUICtrlRead($btnExpandHide)
Case "<"
_ShowOnlineList(False)
Case ">"
_ShowOnlineList(True)
EndSwitch
EndSwitch
WEnd
#EndRegion Loop#Region Func's
[/autoit] [autoit][/autoit] [autoit]
Func _SaveLog()
$LogPath = @ScriptDir & "\ShoutBoxLog\" & @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & "-" & @MIN & "-" & @SEC & ".htm"
FileWrite($LogPath, _IEDocReadHTML($oIE))
EndFunc ;==>_SaveLogFunc _ShowOnlineList($Show)
[/autoit] [autoit][/autoit] [autoit]
Local $pos = WinGetPos($MainGUI)
Switch $Show
Case False
GUICtrlSetData($btnExpandHide, ">")
WinMove($MainGUI, "", $pos[0], $pos[1], $pos[2] - 131, $pos[3])
GUICtrlSetState($WhisperList, @SW_HIDE)
GUICtrlSetState($TopMost, @SW_HIDE)
Case True
GUICtrlSetData($btnExpandHide, "<")
WinMove($MainGUI, "", $pos[0], $pos[1], $pos[2] + 131, $pos[3])
GUICtrlSetState($WhisperList, @SW_SHOW)
GUICtrlSetState($TopMost, @SW_SHOW)
EndSwitch
IniWrite("ShoutBoxClient.ini", "Data", "ShowOnline", $Show = True)
EndFunc ;==>_ShowOnlineListFunc _Reconnect()
[/autoit] [autoit][/autoit] [autoit]
; Prog@ndy
_WinHTTPCloseHandle($hw_connect)
Global $hw_connect = _WinHttpConnect($hw_open, "autoit.de")
Global $_LOGIN_Cookie = IniRead("ShoutBoxClient.ini", "Data", "LogInData", "")
EndFunc ;==>_ReconnectFunc CloseAllHandles()
[/autoit] [autoit][/autoit] [autoit]
_WinHTTPCloseHandle($hw_connect)
_WinHTTPCloseHandle($hw_open)
EndFunc ;==>CloseAllHandlesFunc _AddLogIn($hRequest)
[/autoit] [autoit][/autoit] [autoit]
If $_LOGIN_Cookie Then _WinHTTPAddRequestHeaders($hRequest, $_LOGIN_Cookie, BitOR($WINHTTP_ADDREQ_FLAG_ADD, $WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON))
EndFunc ;==>_AddLogInFunc _ShowLogOut()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Einloggen, $GUI_HIDE)
GUICtrlSetState($Ausloggen, $GUI_SHOW)
GUICtrlSetState($Benutzername, $GUI_DISABLE)
GUICtrlSetState($Passwort, $GUI_DISABLE)
GUICtrlSetState($Absenden, $GUI_ENABLE)
GUICtrlSetState($Text, $GUI_ENABLE)
EndFunc ;==>_ShowLogOut
Func _LogOut()
$h_openRequest = _WinHttpOpenRequest($hw_connect, "GET", $LogOutLink, "HTTP/1.1")
_AddLogIn($h_openRequest)
_WinHttpSendRequest($h_openRequest)
_WinHttpReceiveResponse($h_openRequest)
_WinHTTPCloseHandle($h_openRequest)
GUICtrlSetState($Einloggen, $GUI_SHOW)
GUICtrlSetState($Ausloggen, $GUI_HIDE)
GUICtrlSetState($Benutzername, $GUI_ENABLE)
GUICtrlSetState($Passwort, $GUI_ENABLE)
GUICtrlSetState($Absenden, $GUI_DISABLE)
GUICtrlSetState($Text, $GUI_DISABLE)
$_LOGIN_Cookie = ""
IniWrite("ShoutBoxClient.ini", "Data", "LogInData", "")
EndFunc ;==>_LogOut
Func _TryLogInCookie()
$h_openRequest = _WinHttpOpenRequest($hw_connect, "GET", "index.php", "HTTP/1.1")
_AddLogIn($h_openRequest)_WinHttpSendRequest($h_openRequest)
[/autoit] [autoit][/autoit] [autoit]
_WinHttpReceiveResponse($h_openRequest)
Local $data
Do
$data &= _WinHTTPReadData($h_openRequest, 1)
Until @extended = 0
If $data = "" Then
MsgBox(16, 'AutoIt ShoutBox Chat - Fehler', "Fehler bei der Verbindung zu http://www.autoit.de. Das Programm wird beendet")
Exit
EndIf
_WinHTTPCloseHandle($h_openRequest)
$LogOutLink = StringRegExp($data, "(action=UserLogout&(?:amp;)?t=[a-zA-Z0-9]+)", 3)
If Not @error Then
_ShowLogOut()
$LogOutLink = "/index.php?" & $LogOutLink[0]
Else
$LogOutLink = ""
EndIf
EndFunc ;==>_TryLogInCookieFunc _Login($user, $pw)
[/autoit] [autoit][/autoit] [autoit]
Local $post = "loginUsername=" & _URIEncode($user) & "&loginPassword=" & _URIEncode($pw) & "&url=%2Findex.php%3Fform%3DUserLogin&&x=7&y=7&useCookies=1"
Local $h_openRequest = _WinHttpOpenRequest($hw_connect, "POST", "/index.php?form=UserLogin", "HTTP/1.1", "http://www.autoit.de/")
_WinHttpSendRequest($h_openRequest, "Content-Type: application/x-www-form-urlencoded" & @CRLF, $post)
_WinHttpReceiveResponse($h_openRequest)
Local $header = "", $Index = 0
Do
$header &= _WinHttpQueryHeadersEx($h_openRequest, $WINHTTP_QUERY_SET_COOKIE, $WINHTTP_HEADER_NAME_BY_INDEX, $Index)
$Index = @extended
Until $Index = 0
$header = StringRegExp($header, "(wcf_.*?;)", 3)
Local $CookieString = "Cookie:"
For $i = 0 To UBound($header) - 1
$CookieString &= " " & $header[$i]
Next
IniWrite("ShoutBoxClient.ini", "Data", "LogInData", $CookieString)
IniWrite("ShoutBoxClient.ini", "Data", "User", $user)
_WinHTTPCloseHandle($h_openRequest)
_TryLogInCookie()
EndFunc ;==>_LoginFunc _URIEncode($sData)
[/autoit] [autoit][/autoit] [autoit]
; Prog@ndy
Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
Local $nChar
$sData = ""
For $i = 1 To $aData[0]
;~ ConsoleWrite($aData[$i] & @CRLF)
$nChar = Asc($aData[$i])
Switch $nChar
Case 45, 46, 48 - 57, 65 To 90, 95, 97 To 122, 126
$sData &= $aData[$i]
Case 32
$sData &= "+"
Case Else
$sData &= "%" & Hex($nChar, 2)
EndSwitch
Next
Return $sData
EndFunc ;==>_URIEncodeFunc _URIDecode($sData)
[/autoit] [autoit][/autoit] [autoit]
; Prog@ndy
Local $aData = StringSplit(StringReplace($sData, "+", " ", 0, 1), "%")
$sData = ""
For $i = 2 To $aData[0]
$aData[1] &= Chr(Dec(StringLeft($aData[$i], 2))) & StringTrimLeft($aData[$i], 2)
Next
Return BinaryToString(StringToBinary($aData[1], 1), 4)
EndFunc ;==>_URIDecodeFunc _GetNewestPostAd()
[/autoit] [autoit][/autoit] [autoit]
_GetNewestPost()
EndFunc ;==>_GetNewestPostAdFunc _GetNewestPost($hRequest = -1)
[/autoit] [autoit][/autoit] [autoit]
If $hRequest = -1 Then
$hRequest = _WinHttpOpenRequest($hw_connect, "GET", "/index.php?page=ShoutboxContent&output=xml&since=" & $__LASTMESSAGE, "HTTP/1.1", "http://www.autoit.de/")
_AddLogIn($hRequest)
_WinHttpSendRequest($hRequest)
EndIf
_WinHttpReceiveResponse($hRequest)
Local $data
Do
$data &= _WinHTTPReadData($hRequest, 1)
Until @extended = 0
_WinHTTPCloseHandle($hRequest)
Local $LASTMESSAGE = StringRegExp($data, "<last>(.*?)</last>", 1)
If IsArray($LASTMESSAGE) And $LASTMESSAGE[0] <> $__LASTMESSAGE Then
$__LASTMESSAGE = $LASTMESSAGE[0]
Local $messages = StringRegExp($data, "(?s)<line><!\[CDATA\[(.*?)\]\]></line>", 3)
Local $insert = ""
For $i = 0 To UBound($messages) - 1
$insert &= $messages[$i] & "<br />" & @CRLF
Next
If StringLen($insert) Then
_IEDocInsertHTML($oShoutBox, $insert)
$oIE.Document.parentwindow.Scroll(0, 99999)
$state = WinGetState("AutoIt Shoutbox Chat -- © by Greek und Prog@ndy")
If BitAND($state, 16) Then
$result = StringRegExp($insert, "javascript\:parent\.sbWhisperTo\('(.*?)'\);", 1)
If IsArray($result) Then
TrayTip("Shoutbox Client", "Neue Nachricht von: " & $result[0], 2, 1)
Sleep(2000)
EndIf
EndIf
EndIf
_ReadOnlineList($data)
EndIf
EndFunc ;==>_GetNewestPostFunc _ReadOnlineList(ByRef $data)
[/autoit] [autoit][/autoit] [autoit]
Local $temp = GUICtrlRead($WhisperList)
$data = StringRegExp($data, "(?s)<onlineList>.*?<a(.*)</onlineList>", 1)
$data = StringRegExp($data[0], '">(?:<[^>]*>)*(.+?)(?:</[^>]*>)*?</a>', 3)
GUICtrlSetData($WhisperList, "|-------------|" & _ArrayToString($data), $temp)
EndFunc ;==>_ReadOnlineListFunc _Nachricht($Text)
[/autoit] [autoit][/autoit] [autoit]
$Text = _URIEncode($Text)
;$iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00",_NowCalc())
$h_openRequest2 = _WinHttpOpenRequest($hw_connect, "POST", "/index.php?page=ShoutboxContent&output=xml", "HTTP/1.1", "http://www.autoit.de/")
_AddLogIn($h_openRequest2)
_WinHttpSendRequest($h_openRequest2, "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "since=" & $__LASTMESSAGE & "&message=" & $Text)
_GetNewestPost($h_openRequest2)
EndFunc ;==>_NachrichtFunc _WinHttpQueryHeadersEx($hRequest, $iInfoLevel = $WINHTTP_QUERY_RAW_HEADERS_CRLF, $sName = $WINHTTP_HEADER_NAME_BY_INDEX, $Index = $WINHTTP_NO_HEADER_INDEX)
[/autoit] [autoit][/autoit] [autoit]
Local $tpName = "wstr"
If $sName = $WINHTTP_HEADER_NAME_BY_INDEX Then $tpName = "ptr"
Local $struct = DllStructCreate("dword")Local $a_iCall = DllCall("winhttp.dll", "int", "WinHttpQueryHeaders", _
[/autoit] [autoit][/autoit] [autoit]
"hwnd", $hRequest, _
"dword", $iInfoLevel, _
$tpName, $sName, _
"ptr", 0, _
"ptr", DllStructGetPtr($struct), _
"dword*", $Index)If @error Or $a_iCall[0] Then
[/autoit] [autoit][/autoit] [autoit]
Return SetError(1, 0, 0)
EndIfLocal $i_size = DllStructGetData($struct, 1)
[/autoit] [autoit][/autoit] [autoit]If Not $i_size Then
[/autoit] [autoit][/autoit] [autoit]
Return SetError(0, 0, "")
EndIfLocal $lpBuffer = DllStructCreate("wchar[" & $i_size & "]")
[/autoit] [autoit][/autoit] [autoit]$a_iCall = DllCall("winhttp.dll", "int", "WinHttpQueryHeaders", _
[/autoit] [autoit][/autoit] [autoit]
"hwnd", $hRequest, _
"dword", $iInfoLevel, _
$tpName, $sName, _
"ptr", DllStructGetPtr($lpBuffer), _
"ptr", DllStructGetPtr($struct), _
"dword*", $Index)If @error Or Not $a_iCall[0] Then
[/autoit] [autoit][/autoit] [autoit]
Return SetError(2, 0, 0)
EndIfReturn SetError(0, $a_iCall[6], DllStructGetData($lpBuffer, 1))
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_WinHttpQueryHeadersExFunc WinRunTrans($Window, $Mod)
[/autoit]
If $Mod = "Show" Then
WinSetTrans($Window, "", 0)
GUISetState(@SW_SHOW, $Window)
For $i = 0 To 255 Step 5
WinSetTrans($Window, "", $i)
Sleep(10)
Next
ElseIf $Mod = "Hide" Then
For $i = 255 To 0 Step -5
WinSetTrans($Window, "", $i)
Sleep(10)
Next
GUISetState(@SW_HIDE, $Window)
EndIf
EndFunc ;==>WinRunTrans
#EndRegion Func's
Tut es aber nicht
Jemand ne Idee? -
Bump.
Mit der neuen Beta/Stable läufts:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;==============================================================
; ShoutBox Chat
;==============================================================
; Author: Progandy / Greek
; Little Changes: Sen
; Version: 2.4+
;==============================================================
; Sidenote:
; You need newest Beta for AdlibRegister/OnAutoItExitRegister
;==============================================================
#include <ButtonConstants.au3>
#include <WinHTTP.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <String.au3>
#include <Date.au3>
#include <IE.au3>
#include <Array.au3>
#include <WinAPI.au3>#Region StartUp
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("CloseAllHandles")
AdlibRegister("_GetNewestPostAd", 5000)
Global $__LASTMESSAGE = 0, $hw_connect, $hw_open, $LogOutLink = ""
Global $_LOGIN_Cookie = IniRead("ShoutBoxClient.ini", "Data", "LogInData", "")
DirCreate(@ScriptDir & "\ShoutBoxLog\")
#EndRegion StartUp#Region GUI
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIResizeMode", 802)
$MainGUI = GUICreate("Shoutbox Chat", 700, 380, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_CLIPCHILDREN))
$oIE = _IECreateEmbedded()
$ChatAnzeige = GUICtrlCreateObj($oIE, 0, 0, 550, 300)$Benutzername = GUICtrlCreateInput(IniRead("ShoutBoxClient.ini", "Data", "User", ""), 574, 5, 120, 20)
[/autoit] [autoit][/autoit] [autoit]
$Passwort = GUICtrlCreateInput("", 574, 25, 120, 20, $ES_PASSWORD)
$Einloggen = GUICtrlCreateButton("Einloggen", 574, 45, 120, 24)
$Ausloggen = GUICtrlCreateButton("Ausloggen", 574, 45, 120, 24)
GUICtrlSetState($Ausloggen, $GUI_HIDE)$Absenden = GUICtrlCreateButton("&Absenden", 440, 300, 110, 24)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Absenden, $GUI_DISABLE)
$Aktualisieren = GUICtrlCreateButton("Aktualisieren (F5)", 440, 328, 110, 24)
$Speichern = GUICtrlCreateButton("Speichern", 440, 356, 110, 24)$Text = GUICtrlCreateEdit("", 0, 300, 440, 80, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
[/autoit] [autoit][/autoit] [autoit]$btnExpandHide = GUICtrlCreateButton("<", 550, 0, 19, 380)
[/autoit] [autoit][/autoit] [autoit]
$WhisperList = GUICtrlCreateList("", 569, 71, 131, 309)
$TopMost = GUICtrlCreateCheckbox("TopMost", 599, 365, 131, 15)If IniRead("ShoutBoxClient.ini", "Data", "OnTop", "") = "True" Then
[/autoit] [autoit][/autoit] [autoit]
WinSetOnTop($MainGUI, "", 1)
GUICtrlSetState($TopMost, $GUI_CHECKED)
EndIf
If IniRead("ShoutBoxClient.ini", "Data", "ShowOnline", "True") = "False" Then
_ShowOnlineList(False)
EndIf;Color/Bk Settings
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($Benutzername, 0xF2F6FA)
GUICtrlSetColor($Benutzername, 0x000000)
GUICtrlSetBkColor($Passwort, 0xF2F6FA)
GUICtrlSetColor($Passwort, 0x000000)
GUICtrlSetBkColor($Text, 0xF2F6FA)
GUICtrlSetColor($Text, 0x000000)
GUICtrlSetBkColor($WhisperList, 0xF2F6FA)
GUICtrlSetColor($WhisperList, 0x000000)WinRunTrans($MainGUI, "Show")
[/autoit] [autoit][/autoit] [autoit]
#EndRegion GUI#Region Settings
[/autoit] [autoit][/autoit] [autoit]
$ClearDUMMY = GUICtrlCreateDummy()
Local $Accels[4][2] = [["^{F5}", $Aktualisieren],["{F5}", $Aktualisieren],["{ENTER}", $Absenden],["{ESC}", $ClearDUMMY]]
GUISetAccelerators($Accels)Global $rLastText = ""
[/autoit] [autoit][/autoit] [autoit]
Global $hw_open = _WinHttpOpen("AutoIt ShoutBoxClient")
Global $hw_connect = _WinHttpConnect($hw_open, "autoit.de")_IENavigate($oIE, "about:blank")
[/autoit] [autoit][/autoit] [autoit]
_IEDocWriteHTML($oIE, '<html><head><script type="text/javascript">document.oncontextmenu = function(e){return false;};</script><base href="http://autoit.de/"><link rel="stylesheet" type="text/css" media="screen" href="wcf/style/style-3.css" /></head><body style="margin:0px; padding:0px;"><div class="shoutboxMessageFrame shoutboxFrameInner container-2" style="margin:0px; padding:0px; position:absolute; top:0px; left:0px; width:100%; height:100%;"><div id="shoutboxcontent" class="shoutboxMessageFrame shoutboxFrameInner container-2 smallFont" style="text-align:left; margin:0px; padding:0px;"></div></div></body></html>');
Global $oShoutBox = _IEGetObjById($oIE, "shoutboxcontent")_TryLogInCookie()
[/autoit] [autoit][/autoit] [autoit]
_GetNewestPost()
$FirstStart = False
#EndRegion Settings#Region Loop
[/autoit] [autoit][/autoit] [autoit]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Einloggen
$u = GUICtrlRead($Benutzername)
$p = GUICtrlRead($Passwort)
_Login($u, $p)
Case $Ausloggen
_LogOut()
Case $Absenden
If BitAND(GUICtrlGetState($Absenden), $GUI_DISABLE) = $GUI_DISABLE Then
$u = GUICtrlRead($Benutzername)
$p = GUICtrlRead($Passwort)
_Login($u, $p)
Else
$rText = GUICtrlRead($Text)
If $rText <> "" And $rText <> $rLastText Then
$rLastText = StringRegExpReplace($rText, "\A(\/w)+", "")
GUICtrlSetData($Text, "")
GUICtrlSetData($WhisperList, "-------------")
_Nachricht($rText)
ControlFocus($MainGUI, "", $Text)
EndIf
EndIf
Case $Aktualisieren
_GetNewestPost()
Case $ClearDUMMY
GUICtrlSetData($WhisperList, "-------------")
GUICtrlSetData($Text, "")
Case $Speichern
_SaveLog()
Case $WhisperList
$WTarget = GUICtrlRead($WhisperList)
If $WTarget = "-------------" Or $WTarget = "" Then
GUICtrlSetData($Text, StringRegExpReplace(GUICtrlRead($Text), '\A\/w ".*?"\h?', ""))
;~ GUICtrlSetData($Text, StringRegExpReplace(GUICtrlRead($Text),'\A".*?"\h?',""))
Else
GUICtrlSetData($Text, '/w "' & $WTarget & '" ' & StringRegExpReplace(GUICtrlRead($Text), '\A\/w ".*?"\h?', ""))
;~ GUICtrlSetData($Text, '"' & $WTarget&'" '&StringRegExpReplace(GUICtrlRead($Text),'\A".*?"\h?',""))
EndIf
Case $TopMost
Local $Attrib = BitAND(GUICtrlRead($TopMost), $GUI_CHECKED) = $GUI_CHECKED
IniWrite("ShoutBoxClient.ini", "Data", "OnTop", $Attrib)
WinSetOnTop($MainGUI, "", $Attrib)
Case $btnExpandHide
Switch GUICtrlRead($btnExpandHide)
Case "<"
_ShowOnlineList(False)
Case ">"
_ShowOnlineList(True)
EndSwitch
EndSwitch
WEnd
#EndRegion Loop#Region Func's
[/autoit] [autoit][/autoit] [autoit]
Func _SaveLog()
$LogPath = @ScriptDir & "\ShoutBoxLog\" & @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & "-" & @MIN & "-" & @SEC & ".htm"
FileWrite($LogPath, _IEDocReadHTML($oIE))
EndFunc ;==>_SaveLogFunc _ShowOnlineList($Show)
[/autoit] [autoit][/autoit] [autoit]
Local $pos = WinGetPos($MainGUI)
Switch $Show
Case False
GUICtrlSetData($btnExpandHide, ">")
WinMove($MainGUI, "", $pos[0], $pos[1], $pos[2] - 131, $pos[3])
GUICtrlSetState($WhisperList, @SW_HIDE)
GUICtrlSetState($TopMost, @SW_HIDE)
Case True
GUICtrlSetData($btnExpandHide, "<")
WinMove($MainGUI, "", $pos[0], $pos[1], $pos[2] + 131, $pos[3])
GUICtrlSetState($WhisperList, @SW_SHOW)
GUICtrlSetState($TopMost, @SW_SHOW)
EndSwitch
IniWrite("ShoutBoxClient.ini", "Data", "ShowOnline", $Show = True)
EndFunc ;==>_ShowOnlineListFunc _Reconnect()
[/autoit] [autoit][/autoit] [autoit]
; Prog@ndy
_WinHTTPCloseHandle($hw_connect)
Global $hw_connect = _WinHttpConnect($hw_open, "autoit.de")
Global $_LOGIN_Cookie = IniRead("ShoutBoxClient.ini", "Data", "LogInData", "")
EndFunc ;==>_ReconnectFunc CloseAllHandles()
[/autoit] [autoit][/autoit] [autoit]
_WinHTTPCloseHandle($hw_connect)
_WinHTTPCloseHandle($hw_open)
EndFunc ;==>CloseAllHandlesFunc _AddLogIn($hRequest)
[/autoit] [autoit][/autoit] [autoit]
If $_LOGIN_Cookie Then _WinHTTPAddRequestHeaders($hRequest, $_LOGIN_Cookie, BitOR($WINHTTP_ADDREQ_FLAG_ADD, $WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON))
EndFunc ;==>_AddLogInFunc _ShowLogOut()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Einloggen, $GUI_HIDE)
GUICtrlSetState($Ausloggen, $GUI_SHOW)
GUICtrlSetState($Benutzername, $GUI_DISABLE)
GUICtrlSetState($Passwort, $GUI_DISABLE)
GUICtrlSetState($Absenden, $GUI_ENABLE)
GUICtrlSetState($Text, $GUI_ENABLE)
EndFunc ;==>_ShowLogOut
Func _LogOut()
$h_openRequest = _WinHttpOpenRequest($hw_connect, "GET", $LogOutLink, "HTTP/1.1")
_AddLogIn($h_openRequest)
_WinHttpSendRequest($h_openRequest)
_WinHttpReceiveResponse($h_openRequest)
_WinHTTPCloseHandle($h_openRequest)
GUICtrlSetState($Einloggen, $GUI_SHOW)
GUICtrlSetState($Ausloggen, $GUI_HIDE)
GUICtrlSetState($Benutzername, $GUI_ENABLE)
GUICtrlSetState($Passwort, $GUI_ENABLE)
GUICtrlSetState($Absenden, $GUI_DISABLE)
GUICtrlSetState($Text, $GUI_DISABLE)
$_LOGIN_Cookie = ""
IniWrite("ShoutBoxClient.ini", "Data", "LogInData", "")
EndFunc ;==>_LogOut
Func _TryLogInCookie()
$h_openRequest = _WinHttpOpenRequest($hw_connect, "GET", "index.php", "HTTP/1.1")
_AddLogIn($h_openRequest)_WinHttpSendRequest($h_openRequest)
[/autoit] [autoit][/autoit] [autoit]
_WinHttpReceiveResponse($h_openRequest)
Local $data
Do
$data &= _WinHTTPReadData($h_openRequest, 1)
Until @extended = 0
If $data = "" Then
MsgBox(16, 'AutoIt ShoutBox Chat - Fehler', "Fehler bei der Verbindung zu http://www.autoit.de. Das Programm wird beendet")
Exit
EndIf
_WinHTTPCloseHandle($h_openRequest)
$LogOutLink = StringRegExp($data, "(action=UserLogout&(?:amp;)?t=[a-zA-Z0-9]+)", 3)
If Not @error Then
_ShowLogOut()
$LogOutLink = "/index.php?" & $LogOutLink[0]
Else
$LogOutLink = ""
EndIf
EndFunc ;==>_TryLogInCookieFunc _Login($user, $pw)
[/autoit] [autoit][/autoit] [autoit]
Local $post = "loginUsername=" & _URIEncode($user) & "&loginPassword=" & _URIEncode($pw) & "&url=%2Findex.php%3Fform%3DUserLogin&&x=7&y=7&useCookies=1"
Local $h_openRequest = _WinHttpOpenRequest($hw_connect, "POST", "/index.php?form=UserLogin", "HTTP/1.1", "http://www.autoit.de/")
_WinHttpSendRequest($h_openRequest, "Content-Type: application/x-www-form-urlencoded" & @CRLF, $post)
_WinHttpReceiveResponse($h_openRequest)
Local $header = "", $Index = 0
Do
$header &= _WinHttpQueryHeadersEx($h_openRequest, $WINHTTP_QUERY_SET_COOKIE, $WINHTTP_HEADER_NAME_BY_INDEX, $Index)
$Index = @extended
Until $Index = 0
$header = StringRegExp($header, "(wcf_.*?;)", 3)
Local $CookieString = "Cookie:"
For $i = 0 To UBound($header) - 1
$CookieString &= " " & $header[$i]
Next
IniWrite("ShoutBoxClient.ini", "Data", "LogInData", $CookieString)
IniWrite("ShoutBoxClient.ini", "Data", "User", $user)
_WinHTTPCloseHandle($h_openRequest)
_TryLogInCookie()
EndFunc ;==>_LoginFunc _URIEncode($sData)
[/autoit] [autoit][/autoit] [autoit]
; Prog@ndy
Local $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
Local $nChar
$sData = ""
For $i = 1 To $aData[0]
;~ ConsoleWrite($aData[$i] & @CRLF)
$nChar = Asc($aData[$i])
Switch $nChar
Case 45, 46, 48 - 57, 65 To 90, 95, 97 To 122, 126
$sData &= $aData[$i]
Case 32
$sData &= "+"
Case Else
$sData &= "%" & Hex($nChar, 2)
EndSwitch
Next
Return $sData
EndFunc ;==>_URIEncodeFunc _URIDecode($sData)
[/autoit] [autoit][/autoit] [autoit]
; Prog@ndy
Local $aData = StringSplit(StringReplace($sData, "+", " ", 0, 1), "%")
$sData = ""
For $i = 2 To $aData[0]
$aData[1] &= Chr(Dec(StringLeft($aData[$i], 2))) & StringTrimLeft($aData[$i], 2)
Next
Return BinaryToString(StringToBinary($aData[1], 1), 4)
EndFunc ;==>_URIDecodeFunc _GetNewestPostAd()
[/autoit] [autoit][/autoit] [autoit]
_GetNewestPost()
EndFunc ;==>_GetNewestPostAdFunc _GetNewestPost($hRequest = -1)
[/autoit] [autoit][/autoit] [autoit]
If $hRequest = -1 Then
$hRequest = _WinHttpOpenRequest($hw_connect, "GET", "/index.php?page=ShoutboxContent&output=xml&since=" & $__LASTMESSAGE, "HTTP/1.1", "http://www.autoit.de/")
_AddLogIn($hRequest)
_WinHttpSendRequest($hRequest)
EndIf
_WinHttpReceiveResponse($hRequest)
Local $data
Do
$data &= _WinHTTPReadData($hRequest, 1)
Until @extended = 0
_WinHTTPCloseHandle($hRequest)
Local $LASTMESSAGE = StringRegExp($data, "<last>(.*?)</last>", 1)
If IsArray($LASTMESSAGE) And $LASTMESSAGE[0] <> $__LASTMESSAGE Then
$__LASTMESSAGE = $LASTMESSAGE[0]
Local $messages = StringRegExp($data, "(?s)<line><!\[CDATA\[(.*?)\]\]></line>", 3)
Local $insert = ""
For $i = 0 To UBound($messages) - 1
$insert &= $messages[$i] & "<br />" & @CRLF
Next
If StringLen($insert) Then
_IEDocInsertHTML($oShoutBox, $insert)
$oIE.Document.parentwindow.Scroll(0, 99999)
$state = WinGetState("AutoIt Shoutbox Chat -- © by Greek und Prog@ndy")
If BitAND($state, 16) Then
$result = StringRegExp($insert, "javascript\:parent\.sbWhisperTo\('(.*?)'\);", 1)
If IsArray($result) Then
TrayTip("Shoutbox Client", "Neue Nachricht von: " & $result[0], 2, 1)
Sleep(2000)
EndIf
EndIf
EndIf
_ReadOnlineList($data)
EndIf
EndFunc ;==>_GetNewestPostFunc _ReadOnlineList(ByRef $data)
[/autoit] [autoit][/autoit] [autoit]
Local $temp = GUICtrlRead($WhisperList)
$data = StringRegExp($data, "(?s)<onlineList>.*?<a(.*)</onlineList>", 1)
$data = StringRegExp($data[0], '">(?:<[^>]*>)*(.+?)(?:</[^>]*>)*?</a>', 3)
GUICtrlSetData($WhisperList, "|-------------|" & _ArrayToString($data), $temp)
EndFunc ;==>_ReadOnlineListFunc _Nachricht($Text)
[/autoit] [autoit][/autoit] [autoit]
$Text = _URIEncode($Text)
;$iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00",_NowCalc())
$h_openRequest2 = _WinHttpOpenRequest($hw_connect, "POST", "/index.php?page=ShoutboxContent&output=xml", "HTTP/1.1", "http://www.autoit.de/")
_AddLogIn($h_openRequest2)
_WinHttpSendRequest($h_openRequest2, "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "since=" & $__LASTMESSAGE & "&message=" & $Text)
_GetNewestPost($h_openRequest2)
EndFunc ;==>_NachrichtFunc _WinHttpQueryHeadersEx($hRequest, $iInfoLevel = $WINHTTP_QUERY_RAW_HEADERS_CRLF, $sName = $WINHTTP_HEADER_NAME_BY_INDEX, $Index = $WINHTTP_NO_HEADER_INDEX)
[/autoit] [autoit][/autoit] [autoit]
Local $tpName = "wstr"
If $sName = $WINHTTP_HEADER_NAME_BY_INDEX Then $tpName = "ptr"
Local $struct = DllStructCreate("dword")Local $a_iCall = DllCall("winhttp.dll", "int", "WinHttpQueryHeaders", _
[/autoit] [autoit][/autoit] [autoit]
"hwnd", $hRequest, _
"dword", $iInfoLevel, _
$tpName, $sName, _
"ptr", 0, _
"ptr", DllStructGetPtr($struct), _
"dword*", $Index)If @error Or $a_iCall[0] Then
[/autoit] [autoit][/autoit] [autoit]
Return SetError(1, 0, 0)
EndIfLocal $i_size = DllStructGetData($struct, 1)
[/autoit] [autoit][/autoit] [autoit]If Not $i_size Then
[/autoit] [autoit][/autoit] [autoit]
Return SetError(0, 0, "")
EndIfLocal $lpBuffer = DllStructCreate("wchar[" & $i_size & "]")
[/autoit] [autoit][/autoit] [autoit]$a_iCall = DllCall("winhttp.dll", "int", "WinHttpQueryHeaders", _
[/autoit] [autoit][/autoit] [autoit]
"hwnd", $hRequest, _
"dword", $iInfoLevel, _
$tpName, $sName, _
"ptr", DllStructGetPtr($lpBuffer), _
"ptr", DllStructGetPtr($struct), _
"dword*", $Index)If @error Or Not $a_iCall[0] Then
[/autoit] [autoit][/autoit] [autoit]
Return SetError(2, 0, 0)
EndIfReturn SetError(0, $a_iCall[6], DllStructGetData($lpBuffer, 1))
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_WinHttpQueryHeadersExFunc WinRunTrans($Window, $Mod)
[/autoit]
If $Mod = "Show" Then
WinSetTrans($Window, "", 0)
GUISetState(@SW_SHOW, $Window)
For $i = 0 To 255 Step 5
WinSetTrans($Window, "", $i)
Sleep(10)
Next
ElseIf $Mod = "Hide" Then
For $i = 255 To 0 Step -5
WinSetTrans($Window, "", $i)
Sleep(10)
Next
GUISetState(@SW_HIDE, $Window)
EndIf
EndFunc ;==>WinRunTrans
#EndRegion Func's -
geil
funktioniert das auch mit anderen foren? -
So, das muss ich wieder ausbuddeln, die funktioniert nähmlich mit dem neuen Design nicht
-
- Offizieller Beitrag
Nicht voreilig anpassen, die neue Shotbox ist nicht unbedingt final!
Johannes
-
ich kann die includes nicht downloaden
-
-