Ein bisschen spät aber hoffen kann man immernoch Hoffe du hattest einen schönen Geburtstag, hast dich feiern lassen und bist gut "ins neue Jahr" reingekommen
Beiträge von BadBunny
-
-
Punkt 1: Ich würde vllt erstmal ein Array mit 8 Indexen erstellen, dieses mit Zufällgen Zahlen füllen lassen und dann von hinten die Zahlen verößern/verkleinern, jenachdem wie das Ergebnis des Array ist ---> Das bringt uns zu Punkt 2:
Man hat z.B. durch eine Inputbox einen Stirng bekommen der (Nach überprüfen durch StringIsInt) in ein N großes Array gesplittet wird (Durch StringSplit ($sInput, "")).
Dann lässt du in einer For Schleife die einzelnen Werte addieren in eine Variable.Beispiel:
[autoit]$nSumme = 0
[/autoit]
For $i = 0 to UBound ($aArray, 1) -1
$nSumme += $aArray[$i]
NextZu 3: Einfach mal die Ini Funktionen in der Hilfe anschauen. Am besten eine Sektion ("Codes", "Bonus" oder so) mit Schlüsseln die sich hochzählen (von 1-n) und die Werte dann einfach der Bonuscode der eingegeben wurde.
Gruß
PS: Wenn du dich noch nicht so gut mit Arrays auskennst (Kann sein das ich das falsch verstanden hab ) schau dir mal das Tutorial von BugFix an.
-
Schonmal AutoIt bzw SciTE4AutoIt komplett gelöscht und deinstalliert und dann die neueste Version (Vllt erstmal keine Beta) neu geladen und installiert? Das sollte mögliche falsche Einstellungen wieder beheben.
-
Mit einer For Schleife sollte das Funktionieren.
[autoit];; Beispielcode:
[/autoit]
Dim $aArray[200]
For $i = 0 to UBound ($aArray) -1
$aArray[$i]=Random (0, 100)
NextDer Code füllt ein Array (In diesem Fall 200 Zeilen) mit 200 Zufallswerten die fast alle unterschiedlich sind.
-
Herzlichen Glückwunsch, feier schön und lass dich feiern Auf weitere erfolgreiche Jahre ;D
-
Natürlich geht es auch ohne FTP, musst dir dann aber was selber basteln. Einen Server schreiben (Am besten TCP, so wie FTP es auch nutzt), Port (z.B. 21, das war glaube ich auch der Port von FTP??) und dann dein eigenes Protokoll schreiben. Bis jetzt sind es ja nicht so viele Infos das es nicht übersichtlich ist. Titel und Inhalt.
Und der Server müsste nichtmal mit AutoIt geschrieben werden, und für die Client Funktionen könntest du Dlls schreiben, also das sollte überhaupt kein Problem werden. Kannst dich ja an bereits bestehenden Protokollen orientieren (ich hab mir z.B. SMTP mal angeschaut, ich denke FTP ist sicherlich interessant und und und. Natürlich würden auch Game Protokolle gehen, aber die sind nicht ganz so einfach zu verstehen (Was auch der Sinn davon ist^^))
Gruß
EDIT: Siehe autoBert---Mit LimaCity kannst du ein eigenes Server Programm nicht hosten, musst dann wohl einen richtigen Anbieter finden...
-
In dem Fall würdest du vermutlich nur das in der Variable $1234 stehen haben: The amount of data written.
"If writing binary, the number of bytes written, if writing text, the number of characters written." (aus der Hilfe)Also nur die Anzahl der Buchstaben bzw der Bytes.
um die Geschriebenen Zeichen zu bekommen musst du einfach nur die Variable die an ConsoleWrite gegeben wird (Also das was geschrieben wird ;D) benutzen, damit hast du doch alles was du brauchst?
Das wäre im Bsp. von $var die Variable $s_String -
Gefällt mir sehr! Nur wird es nicht etwas unübersichtlich wenn die Listview mit tausenden von Möglichkeiten vollgepumpt wird und man sie nicht richtig durchsuchen kann etc? Bis jetzt sind nur ein paar Themen da, aber wer weiß
Und vllt noch eine Möglichkeit die Ergebnisse etc auf eine Website abzuloaden, damit man die auch ohne das Programm in die Einträge einsehen kann.
PS: Ich weiß zwar nicht was für einen Server du benutzt aber am besten du schaust mal nach ob das von der AGB erlaubt ist... die haben da manchmal ihre Probleme mit, jenachdem wofür der Server eig gedacht ist...
Gruß
-
Herzlichen Glückwunsch Feier schön, lass dich feiern und hab einen schönen Tag
PS: Hat eig schon jmd dein Rätsel gelöst?^^
-
Wenn man es genau nimmt gibt es keine Zufälle, weil alles aus einem bestimmten Grund passiert und seine Ursachen hat. Nur manchmal sind einem die Umstände nicht alle bekannt wodurch man sich nicht den Weg herleiten kann. (Besagt sowas ähnliches nicht auch die Chaostheorie? Alles besteht aus Verknüpfungen zwischen Handlungen)
Um zu deiner Frage zurückzukommen ob es möglich ist eine Random Funktion in AutoIt zu schreiben: Ich denke mal schon. Man brauch nur Werte die man nicht unbedingt beeinflussen kann (Zeit etc), diese mehrmals miteinander irgendwie zusammenwirken lassen und dann hat man ein Ergebnis, welches man als Aussenstehender ohne die bekannten Werte und die Zusammenarbeit zwischen diesen als zufällig deutet.
Gruß
-
Ich freu mich immer ein Projekt zu sehen an dem du beteiligt bist, da kommen meistens geniale Sachen dabei raus die, aus meiner Sicht, sehr sauber und übersichtlich gecodet sind!
Zum Spiel: Ich kenn die alten C64 Spiele nicht (Also auch nicht Mafia) aber deins sieht schon ziemlich ordentlich aus. Ich mag das 2D-3D Zusammenspiel auch, die Figur ist zwar noch etwas hell am Rand, aber ich weiß ja nicht ob du die Grafiken auch bis zum Ende nimmst.
Wie wäre es wenn du nicht die Figur drehst beim routieren sondern die Kamera (bzw das Feld), dann würde man eine bessere Sicht haben. Oder das man mit den Pfeiltasten die Kamera/den Untergrund drehen kann und mit A und D die Person wodurch man großen Spielraum hat.Gruß
-
Gefällt mir! Damit kann man sicherlich viel anfangen!
Hab mir den Aufbau von den einzelnen Funktionen nicht angeschaut (Also wie sie genau funktionieren) aber könntest du auch Funktionen machen (Keine Makro-Like Funktionen) welche die Werte ändern? Hintergund ist ja nicht konstant, die Art des Hintergrundes etc, so das man dann selber sagen kann der Hintergrund soll jetzt gekachelt werden, neuer Hintergrundpfad ist **** etc. Das sollte denke ich mal alles über Dll Calls oder auch über die Registry funktionieren, aber ich denke mal du kennst dich da besser ausGruß
-
Mönche, Indianer (Kolumbus ;D), Pioniere, Sklave, Reiter, Bogenschützen, Kamelreiter, Wildpferdefänger^^, ...
In was für eine Richtung soll es denn gehen? Ein wenig Fantasy, reines Kampfspiel oder auch taktisches Spiel mit Gruppenführern etc, Buffs und und und? -
Die Befehle stehen in der Hilfe unter Inhalt und Index (Zum Suchen). Man kann die Parameter etc nachschlagen indem man auf die Gewünschte Funktion mit Doppelklick klickt. Bei Run () würde da dann stehen:
Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )Die Parameter in [] sind optional, das bedeutet sie müssen nicht gesetzt werden, können aber (Ansonsten hat es einen Standardwert)
Darunter befindet sich eine Tabelle in der die Parameter mit Namen erklärt werden.
Darauf folgen die Return bzw Error Werte und die Infos. Meistens ist unten noch ein Beispielscript.Zu deinem Code:
Notepad.exe ist ein von Windows Standardmäßigeingetragenes Programm wodurch man es auch nur mit Namen öffnen kann. Normalerweise gibt man den kompletten Pfad zu dem Programm an (Path ... \Datei.exe, Mit Endung!)(Im Forum kann man die Befehle auch mit einem Klick darauf in der deutschen Onlinehilfe nachschauen!)
WinWaitActive:
Der 1. Parameter ist der Titel des Fensters. Im Falle vom Editor ist es immer eine Unbekannte Datei (Da sie noch nicht abgespeichert ist). Man kann auch über bestimmte Opt() Parameter Einstellen, wie das Erkennen des Titels (z.B. nur von vorne, Teilweise etc) möglich ist.
Du kannst aber auch anstat den Namen des Fensters den ClassnameNN angeben welchen man in der Au3 Hilfe nachlesen kann (Ist im AutoIt Ordner Enthalten, mit dem Cursor einfach aufs Fenster ziehen und die Infos lesen)Gruß
-
Herzlichen Glückwunschn ;D Feier schön, lass dich feiern und übertreibs nicht... der 18. kommt auch noch
-
Geht nicht in AutoIt. Musst wenn dann ein Array bzw DllStruct übergeben und diesen dann immer auswerten. Damit kannst du Variable Anzahl der "Parameter" machen und dann ein Array wieder returnen.
-
Ein wenig spät aber auch von mir einen Herzlichen Glückwunsch. Hoffe ihr habt gut gefeiert
-
Du könntest versuchen das Icon in eine Bitmap zu laden und diese dann (Mit GDI+ oder ASM (Natürlich viel schneller)) komplett in eine Farbe zu bringen, wenn die Pixel eine andere Farbe haben als scharz. Aber dann müsste daran gedacht werden das man die Bilder immer schön aus dem Speicher lässt, sonst kann das nach vielem Wechseln den Speicher überfüllen... Ist sicherlich nicht so einfach. Ich weiß auch nicht wie man eine Bitmap an die Funktion TraySetIcon() aber irg wie müsste das möglich sein...
-
Nicht schlecht. Ich würd als Kreise aber _GDIPlus_GraphicsFillEllipse nehmen und die Graphic auf Smooth Mode 2 stellen, dann sind die viel schöner und runder. Und evtl noch einen Rand um die Kreise, das würde auch noch schick aussehen.
Gruß -
Das senden an einen SMTP Server mit AutoIt ist kein Problem, hab dafür auch mal ein kleines Script geschrieben als Übung.
Spoiler anzeigen
[autoit]#include <StaticConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <Base64.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $_TCP_MainSocket
[/autoit] [autoit][/autoit] [autoit]Global $nWidth = 800, $nHeight = 600
[/autoit] [autoit][/autoit] [autoit]$hWnd = GUICreate("Mail-It", $nWidth, $nHeight, -1, -1, BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_SIZEBOX))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0xDDDDFF)
GUISetOnEvent(-3, "_Exit", $hWnd)
$Group_Login = GUICtrlCreateGroup("Login", $nWidth - 160, 10, 150)
$Group_Login_Input_Name = GUICtrlCreateInput("", $nWidth - 150, 35, 130, 25)
GUICtrlSendMsg($Group_Login_Input_Name, 0x1501, 0, "Name")
GUICtrlSetFont($Group_Login_Input_Name, 12)
$Group_Login_Input_Passwort = GUICtrlCreateInput("", $nWidth - 150, 65, 130, 25, $ES_PASSWORD)
GUICtrlSendMsg($Group_Login_Input_Passwort, 0x1501, 0, "Passwort")
GUICtrlSetFont($Group_Login_Input_Passwort, 12)
$Group_Login_Input_SMTPServer = GUICtrlCreateInput("", $nWidth - 150, 95, 130, 25)
GUICtrlSendMsg($Group_Login_Input_SMTPServer, 0x1501, 0, "SMTP Server")
GUICtrlSetFont($Group_Login_Input_SMTPServer, 12)
$Group_Login_Button_Login = GUICtrlCreateButton("Login", $nWidth - 150, 125, 90, 25)
GUICtrlSetOnEvent($Group_Login_Button_Login, "_Login")
GUICtrlCreateGroup("", -99, -99, 1, 1);; ###EMail Vorlage###
[/autoit] [autoit][/autoit] [autoit]
$Group_Mailinfos = GUICtrlCreateGroup("Mail-Infos", 10, 10, $nWidth - 180, 150)$Group_Mailinfos_Label_From = GUICtrlCreateLabel("From:", 20, 40)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont($Group_Mailinfos_Label_From, 10)
GUICtrlSetState($Group_Mailinfos_Label_From, $GUI_DISABLE)
$Group_Mailinfos_Input_From = GUICtrlCreateInput("", 75, 40, $nWidth - 265)
GUICtrlSetState($Group_Mailinfos_Input_From, $GUI_DISABLE)
$Group_Mailinfos_Label_To = GUICtrlCreateLabel("To:", 20, 70)
GUICtrlSetFont($Group_Mailinfos_Label_To, 10)
GUICtrlSetState($Group_Mailinfos_Label_To, $GUI_DISABLE)
$Group_Mailinfos_Input_To = GUICtrlCreateInput("", 75, 70, $nWidth - 265)
GUICtrlSetState($Group_Mailinfos_Input_To, $GUI_DISABLE)$Group_Mailinfos_Label_Subject = GUICtrlCreateLabel("Subject:", 20, 120)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetFont($Group_Mailinfos_Label_Subject, 10)
GUICtrlSetState($Group_Mailinfos_Label_Subject, $GUI_DISABLE)
$Group_Mailinfos_Input_Subject = GUICtrlCreateInput("", 75, 120, $nWidth - 265)
GUICtrlSetState($Group_Mailinfos_Input_Subject, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)$Edit_EMailBody = GUICtrlCreateEdit("", 10, 190, $nWidth - 20, $nHeight - 270)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Edit_EMailBody, $GUI_DISABLE)
$Button_Send = GUICtrlCreateButton("Senden", $nWidth - 100, $nHeight - 75, 90, 30)
GUICtrlSetOnEvent($Button_Send, "_Senden")
GUICtrlSetFont($Button_Send, 10)
GUICtrlSetState($Button_Send, $GUI_DISABLE)
;; ###EMail Vorlage###$Label_Status = GUICtrlCreateLabel("Ready", 0, $nHeight - 38, $nWidth, 16, BitOR($SS_SIMPLE, $SS_SUNKEN))
[/autoit] [autoit][/autoit] [autoit]
GUISetState()While Sleep(50)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]Func _Senden()
[/autoit] [autoit][/autoit] [autoit]
$_From = GUICtrlRead($Group_Mailinfos_Input_From)
$_To = GUICtrlRead($Group_Mailinfos_Input_To)
$_Subject = GUICtrlRead($Group_Mailinfos_Input_Subject)
$_Message = GUICtrlRead($Edit_EMailBody)_SendToSMTPServer("MAIL FROM:<" & $_From & ">")
[/autoit] [autoit][/autoit] [autoit]
If Not _ShowRecvInState() Then
_ErrMsg ("Absender nicht gefunden")
Return False
EndIf
_SendToSMTPServer("RCPT TO:<" & $_To & ">")
If Not _ShowRecvInState() Then
_ErrMsg ("Empfänger nicht gefunden")
Return False
EndIf
_SendToSMTPServer("DATA")
If Not _ShowRecvInState() Then
_ErrMsg ("DATA wurde nicht erkannt")
Return False
EndIf
;; MESSAGE
_SendToSMTPServer("FROM:" & $_From & "")
_SendToSMTPServer("TO:<" & $_To & ">")
_SendToSMTPServer ("Subject: " & $_Subject)
_SendToSMTPServer (@CRLF)
_SendToSMTPServer ($_Message)
_SendToSMTPServer ("***")
_SendToSMTPServer ("[Mail-It]: Gesendet am " & @MDAY & ":" & @MON & ":" & @YEAR & " um " & @HOUR & ":" & @MIN & "Uhr.")
_SendToSMTPServer ("***")
_SendToSMTPServer (@CRLF & ".")
If Not _ShowRecvInState() Then
_ErrMsg ("Message konnte nicht gesendet werden")
Return False
EndIf
EndFunc ;==>_SendenFunc _Login()
[/autoit] [autoit][/autoit] [autoit]
$_Name = GUICtrlRead($Group_Login_Input_Name)
$_Passwort = GUICtrlRead($Group_Login_Input_Passwort)
$_SMTPServer = GUICtrlRead($Group_Login_Input_SMTPServer)
If $_Name = "" Or $_Passwort = "" Or $_SMTPServer = "" Then
_ErrMsg("Bitte füllen Sie alle Felder aus.")
_ChangeState("Ready")
Return False
EndIf;; ##Connecting##
[/autoit] [autoit][/autoit] [autoit]
TCPStartup()
_ChangeState("Connecting...")
$_TCP_MainSocket = TCPConnect(TCPNameToIP($_SMTPServer), 25)
If @error Then
_ErrMsg("Verbindung nicht möglich")
_ChangeState("Ready")
Return False
EndIf
If Not _ShowRecvInState() Then Return False
;; ##Connecting##;; ##Authentification##
[/autoit] [autoit][/autoit] [autoit]
_SendToSMTPServer("HELO MailItClient.org")
If @error Then
_ErrMsg("Verbindung verloren?")
_ChangeState("Ready")
Return False
EndIf
If Not _ShowRecvInState() Then Return False
_SendToSMTPServer("AUTH LOGIN")
If Not _ShowRecvInState() Then Return False
_SendToSMTPServer(_Base64Encode($_Name)) ;; Verlangt Base64
If Not _ShowRecvInState() Then Return False
_SendToSMTPServer(_Base64Encode($_Passwort)) ;; Verlangt Base64
If Not _ShowRecvInState() Then
_ErrMsg("Passwort oder Name falsch")
Return False
EndIf
;; ##Authentification##GUICtrlSetState($Group_Login_Button_Login, $GUI_DISABLE)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Group_Login_Input_Name, $GUI_DISABLE)
GUICtrlSetState($Group_Login_Input_Passwort, $GUI_DISABLE)
GUICtrlSetState($Group_Login_Input_SMTPServer, $GUI_DISABLE)GUICtrlSetState($Group_Mailinfos_Input_From, $GUI_ENABLE)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Group_Mailinfos_Input_Subject, $GUI_ENABLE)
GUICtrlSetState($Group_Mailinfos_Input_To, $GUI_ENABLE)
GUICtrlSetState($Group_Mailinfos_Label_From, $GUI_ENABLE)
GUICtrlSetState($Group_Mailinfos_Label_Subject, $GUI_ENABLE)
GUICtrlSetState($Group_Mailinfos_Label_To, $GUI_ENABLE)
GUICtrlSetState($Button_Send, $GUI_ENABLE)
GUICtrlSetState($Edit_EMailBody, $GUI_ENABLE)AdlibRegister("_Ping", 30 * 1000)
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_LoginFunc _Ping()
[/autoit] [autoit][/autoit] [autoit]
AdlibUnRegister("_Ping")
If _SendToSMTPServer("PING") = 0 Then
_ErrMsg("Verbindung verloren")
_ChangeState("Ready")GUICtrlSetState($Group_Login_Button_Login, $GUI_ENABLE)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Group_Login_Input_Name, $GUI_ENABLE)
GUICtrlSetState($Group_Login_Input_Passwort, $GUI_ENABLE)
GUICtrlSetState($Group_Login_Input_SMTPServer, $GUI_ENABLE)GUICtrlSetState($Group_Mailinfos_Input_From, $GUI_DISABLE)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($Group_Mailinfos_Input_Subject, $GUI_DISABLE)
GUICtrlSetState($Group_Mailinfos_Input_To, $GUI_DISABLE)
GUICtrlSetState($Group_Mailinfos_Label_From, $GUI_DISABLE)
GUICtrlSetState($Group_Mailinfos_Label_Subject, $GUI_DISABLE)
GUICtrlSetState($Group_Mailinfos_Label_To, $GUI_DISABLE)
GUICtrlSetState($Button_Send, $GUI_DISABLE)
GUICtrlSetState($Edit_EMailBody, $GUI_DISABLE)Return False
[/autoit] [autoit][/autoit] [autoit]
EndIf
_ChangeState("Ready")
AdlibRegister("_Ping", 30 * 1000)
EndFunc ;==>_PingFunc _SendToSMTPServer($msg)
[/autoit] [autoit][/autoit] [autoit]
_ChangeState("Send>> " & $msg)
$ret = TCPSend($_TCP_MainSocket, $msg & @CRLF)
Return $ret
EndFunc ;==>_SendToSMTPServerFunc _ShowRecvInState()
[/autoit] [autoit][/autoit] [autoit]
$hTimer = TimerInit()
Do
$recv = TCPRecv($_TCP_MainSocket, 512)
If TimerDiff($hTimer) >= 3000 Then
_ErrMsg("Begrüßung fehlgeschlagen")
_ChangeState("Ready")
Return False
EndIf
Until $recv <> ""
;; Recv Type bekommen
;~ 1XX
;~ Mailserver hat die Anforderung akzeptiert, ist aber selbst noch nicht tätig geworden. Eine Bestätigungsmeldung ist erforderlich.
;~ 2XX
;~ Mailserver hat die Anforderung erfolgreich ohne Fehler ausgeführt.
;~ 3XX
;~ Mailserver hat die Anforderung verstanden, benötigt aber zur Verarbeitung weitere Informationen.
;~ 4XX
;~ Mailserver hat einen temporären Fehler festgestellt. Wenn die Anforderung ohne jegliche Änderung wiederholt wird, kann die Verarbeitung möglicherweise abgeschlossen werden.
;~ 5XX
;~ Mailserver hat einen fatalen Fehler festgestellt. Die Anforderung kann nicht verarbeitet werden.Switch StringLeft($recv, 1)
[/autoit] [autoit][/autoit] [autoit]
Case 1
_ChangeState("Req. ok")
Case 2
_ChangeState("Req. ok")
Case 3
_ChangeState("Req. ok need more Information")
Case 4
_ChangeState("Ready")
_ErrMsg("Temporärer Fehler")
Return False
Case 5
_ChangeState("Ready")
_ErrMsg("Fataler Fehler")
Return False
Case Else
_ChangeState("Ready")
_ErrMsg("Rückgabe nicht erkannt")
Return False
EndSwitch
_ChangeState($recv)
Return ($recv)
EndFunc ;==>_ShowRecvInStateFunc _ChangeState($State)
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
GUICtrlSetData($Label_Status, $State)
EndFunc ;==>_ChangeStateFunc _ErrMsg($msg)
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64, "Fehler", $msg, 10, $hWnd)
EndFunc ;==>_ErrMsgFunc _Exit()
[/autoit]
TCPCloseSocket($_TCP_MainSocket)
TCPShutdown()
Exit
EndFunc ;==>_Exithttp://the-welters.com/professional/smtp.html Vllt hilft dir das auch^^
Gruß
EDIT: Base64.au3 by UEZ
Base64.au3
[autoit]#include-once
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <GUIMenu.au3>
#include <GUIRichEdit.au3>
#include <ListViewConstants.au3>
#include <Memory.au3>
#include <WindowsConstants.au3>
Global $_B64E_CodeBuffer, $_B64E_CodeBufferMemory, $_B64E_Init, $_B64E_EncodeData, $_B64E_EncodeEnd#region Base64 encode by UEZ
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Func _Base64Encode($Data, $LineBreak = 0) ;code by Ward - modified by UEZ
Local $State = _Base64EncodeInit($LineBreak)
Return StringReplace(StringStripCR(_Base64EncodeData($State, $Data) & _Base64EncodeEnd($State)), @LF, "")
EndFunc ;==>_Base64EncodeFunc _Base64EncodeData(ByRef $State, $Data) ;code by Ward
[/autoit] [autoit][/autoit] [autoit]
If Not IsDllStruct($_B64E_CodeBuffer) Or Not IsDllStruct($State) Then Return SetError(1, 0, "")
$Data = Binary($Data)
Local $InputLen = BinaryLen($Data)
Local $Input = DllStructCreate("byte[" & $InputLen & "]")
DllStructSetData($Input, 1, $Data)
Local $OputputLen = Ceiling(BinaryLen($Data) * 1.4) + 3
Local $Output = DllStructCreate("char[" & $OputputLen & "]")
DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($_B64E_CodeBuffer) + $_B64E_EncodeData, _
"ptr", DllStructGetPtr($Input), _
"uint", $InputLen, _
"ptr", DllStructGetPtr($Output), _
"ptr", DllStructGetPtr($State))Return DllStructGetData($Output, 1)
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_Base64EncodeDataFunc _Base64EncodeEnd(ByRef $State) ;code by Ward
[/autoit] [autoit][/autoit] [autoit]
If Not IsDllStruct($_B64E_CodeBuffer) Or Not IsDllStruct($State) Then Return SetError(1, 0, "")
Local $Output = DllStructCreate("char[5]")
DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($_B64E_CodeBuffer) + $_B64E_EncodeEnd, _
"ptr", DllStructGetPtr($Output), _
"ptr", DllStructGetPtr($State), _
"int", 0, _
"int", 0)
Return DllStructGetData($Output, 1)
EndFunc ;==>_Base64EncodeEndFunc _Base64EncodeInit($LineBreak = 76) ;code by Ward
[/autoit] [autoit][/autoit] [autoit]
If Not IsDllStruct($_B64E_CodeBuffer) Then
If @AutoItX64 Then
Local $Opcode = '0x89C08D42034883EC0885D2C70100000000C64104000F49C2C7410800000000C1F80283E20389410C740683C00189410C4883C408C389C94883EC3848895C242848897424304889CB8B0A83F901742083F9024889D87444C6000A4883C001488B74243029D8488B5C24284883C438C30FB67204E803020000BA3D0000004080FE3F7F08480FBEF60FB614308813C643013D488D4303C643023DEBBC0FB67204E8D7010000BA3D0000004080FE3F7F08480FBEF60FB614308813C643013D488D4302EB9489DB4883EC68418B014863D248895C242848897424304C89C348897C24384C896424484C89CE83F80148896C24404C896C24504C897424584C897C24604C8D2411410FB6790474434D89C64989CD0F82F700000083F8024C89C5747B31C0488B5C2428488B742430488B7C2438488B6C24404C8B6424484C8B6C24504C8B7424584C8B7C24604883C468C34C89C54989CF4D39E70F840B010000450FBE374D8D6F014489F025F0000000C1F80409C7E8040100004080FF3FBA3D0000007F08480FBEFF0FB614384489F78855004883C50183E70FC1E7024D39E50F84B2000000450FB675004983C5014489F025C0000000C1F80609C7E8BD0000004080FF3FBA3D0000007F08480FBEFF0FB61438BF3F0000008855004421F74C8D7502E896000000480FBED70FB604108845018B460883C0013B460C89460875104C8D7503C645020AC7460800000000904D39E5742E410FBE7D004D8D7D01498D6E01E8560000004889FA83E70348C1EA02C1E70483E23F0FB60410418806E913FFFFFF4489F040887E04C7060000000029D8E9CCFEFFFF89E840887E04C7060200000029D8E9B9FEFFFF89E840887E04C7060100000029D8E9A6FEFFFFE8400000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F58C3'
Else
Local $Opcode = '0x89C08B4C24088B44240489CAC1FA1FC1EA1E01CAC1FA0283E103C70000000000C6400400C740080000000089500C740683C20189500CC2100089C983EC0C8B4C2414895C24048B5C2410897424088B1183FA01741D83FA0289D87443C6000A83C0018B74240829D88B5C240483C40CC210000FB67104E80C020000BA3D00000089F180F93F7F0989F20FBEF20FB6143088138D4303C643013DC643023DEBBD0FB67104E8DF010000BA3D00000089F180F93F7F0989F20FBEF20FB6143088138D4302C643013DEB9489DB83EC3C895C242C8B5C244C896C24388B542440897424308B6C2444897C24348B030FB6730401D583F801742D8B4C24488954241C0F820101000083F80289CF747D31C08B5C242C8B7424308B7C24348B6C243883C43CC210008B4C244889D739EF0F84400100008D57010FBE3F89542418894C241489F825F0000000C1F80409C6897C241CE8330100008B542418C644240C3D8B4C241489C789F03C3F7F0B0FBEF00FB604378844240C0FB644240C8D790188018B74241C83E60FC1E60239EA0F84CB0000000FB60A83C2018954241C89C825C0000000C1F80609C6884C2414E8D8000000BA3D0000000FB64C24148944240C89F03C3F7F0B0FBEF08B44240C0FB6143083E13F881789CEE8AD00000089F10FBED18D4F020FB604108847018B430883C0013B430C894308750EC647020A8D4F03C7430800000000396C241C743A8B44241C8B7C241C0FBE30894C241483C701E8650000008B4C241489F283E60381E2FC000000C1EA02C1E6040FB60410880183C101E9E4FEFFFF89F088430489C8C703000000002B442448E9B2FEFFFF89F189F8884B04C703020000002B442448E99CFEFFFF89F088430489C8C703010000002B442448E986FEFFFFE8400000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F58C3'
EndIf
$_B64E_Init = (StringInStr($Opcode, "89C0") - 3) / 2
$_B64E_EncodeData = (StringInStr($Opcode, "89DB") - 3) / 2
$_B64E_EncodeEnd = (StringInStr($Opcode, "89C9") - 3) / 2
$Opcode = Binary($Opcode)$_B64E_CodeBufferMemory = _MemVirtualAlloc(0, BinaryLen($Opcode), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
[/autoit] [autoit][/autoit] [autoit]
$_B64E_CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $_B64E_CodeBufferMemory)
DllStructSetData($_B64E_CodeBuffer, 1, $Opcode)
OnAutoItExitRegister("_B64E_Exit")
EndIfLocal $State = DllStructCreate("byte[16]")
[/autoit] [autoit][/autoit] [autoit]
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($_B64E_CodeBuffer) + $_B64E_Init, _
"ptr", DllStructGetPtr($State), _
"uint", $LineBreak, _
"int", 0, _
"int", 0)
Return $State
EndFunc ;==>_Base64EncodeInitFunc _B64E_Exit() ;code by Ward
[/autoit]
$_B64E_CodeBuffer = 0
_MemVirtualFree($_B64E_CodeBufferMemory, 0, $MEM_RELEASE)
EndFunc ;==>_B64E_Exit
#endregion Base64 encode by EUZ