Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 15:18

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[AutoIT]Let's write: Skype Quoten Faker

Discussion on [AutoIT]Let's write: Skype Quoten Faker within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 1250
Join Date: Nov 2011
Posts: 1,510
Received Thanks: 238
[AutoIT]Let's write: Skype Quoten Faker

Inhaltsverzeichnis:
  • Vorwort
  • Was benötigen wir?
  • GUI und Includes
  • Erklärung des Prinzips
  • Die Programmierung
  • Nachwort


Vorwort:
Hallo Epvp!
Das hier wird der erste Teil, meiner Serie Let's write. Ich schreibe diese 'Tutorials' nicht nur für euch, sonder auch um mir selber AutoIT näher zu bringen.
Dieses Programm wird ein sehr simples, mit der Zeit wird sich dies steigern.


Was benötigen wir?
  • AutoIT
  • Skype
  • Menschenverstand


GUI und Includes

Auf die GUI werde ich nicht wirklich eingehen, da dies meines Erachtens zu den grundlegendsten Sachen gehört. Hier aber mal ein Screenshot von der GUI, die ich mit dem KODA Formdesigner erstellt habe:

Bei den Includes brauchen wir nur die standart GUI Includes.

Erklärung des Prinzips:

Hier haben wir einmal den 'Code' mit dem wir eine Quote in Skype erzeugen können:
Code:
<quote author="SkypeName" authorname="VollerName" timestamp="Timestamp">Text<legacyquote>xxx</legacyquote></quote>
Erklärung:
Quote Autor ist der Skypename, zum Beispiel irofl.epvp.

Authorname ist der in Skype angezeigte Name, zum Beispiel iRofl von Epvp

Der Timestamp (sorry wenn ich irre) ist eine Zusammenrechnung(?) von einem Datum. Heute ist der 30.8.2013 und es ist 09:10:56. Als TimeStamp wäre das: 1377846656 ()

Was der Text ist, sollte selbsterklärend sein. Nämlich der Text den wir versenden wollen.

Nun müssen wir also in der Theorie die Textfelder alle auslesen, in Variablen verpacken, und in diesen Code einfügen, welcher dann in die Zwischenablage (Clipboard) gespeichert wird.


Die Programmierung
Ich werde hier den Code von der GUI nur einmal am Ende zeigen, da ihr sonst zuviel scrollen müsst, also nicht wundern (:

Im wesentlichen brauchen wir nur eine Funktion, welche aufgerufen wird, wenn Unser Button (siehe GUI und Includes) gedrückt wird. Ich werde dies aus Prinzip in eine Funktion schreiben, das so die Weiterentwicklung leichter fällt.

Nun, also legen wir uns eine Funktion an.
Code:
Func ReadyText()
EndFunc
Innerhalb dieser Funktion lassen wir jetzt erstmal unsere Textfelder alle auslesen. Dies tuhen wir jeweils indem wir uns eine Variabel anlegen, und dem Befehl GUICtrlRead($VariableDesTextfeldes).

In der Praxis:
Code:
   $NameFakeV = GUICtrlRead($NameFake)
   $TimeStampV = GUICtrlRead($TimeStamp)
   $TextV = GUICtrlRead($Text)
Bei den ersten Variablen steht das V jeweils für Value. Die Variablen $NameFake, $TimeStamp und $Text sind meine Inputboxen, diese können bei euch anders heißen.


Nun Speichern wir unseren 'Quoten-erzeugungs-Code' in eine weitere Variabel, ich nenne sie mal $ClipText.
Code:
$ClipText = "<quote author="SkypeName" authorname="VollerName" timestamp="Timestamp">Text<legacyquote>xxx</legacyquote></quote>"
Nun müssen wir aber SkypeName, VollerName, Timestamp und Text durch unsere Variablen ersetzten (Ich nehme für VollerName und SkypeName die gleiche Variable, Funktioniert wunderbar!).


Nun wird es ein wenig kompliziert. Denn wir müssen Anführungsstriche für die Nicht-Variablen in unserem String nehmen, und in dem String, beziehungsweise um unsere Variablen sind Anfürungszeichen. Deshalb verwende ich hier die ' Anfürungszeichen, welche ihr über der Raute findet.
Code:
$ClipText = '<quote author='&'"'&$NameFakeV&'"'&' authorname='&'"'&$NameFakeV&'"'&' timestamp='&'"'&$TimeStampV&'"'&'>'&$TextV&'<legacyquote>xxx</legacyquote></quote>'
Nun müssen wir dieses Text nur noch ein die Zwischenablage kopieren. Das machen wir so:
Code:
ClipPut($ClipText)
Und unsere Funktion ist fertig! So sieht sie aus:
Code:
Func ReadyText()
   $NameFakeV = GUICtrlRead($NameFake)
   $TimeStampV = GUICtrlRead($TimeStamp)
   $TextV = GUICtrlRead($Text)
	  $ClipText = '<quote author='&'"'&$NameFakeV&'"'&' authorname='&'"'&$NameFakeV&'"'&' timestamp='&'"'&$TimeStampV&'"'&'>'&$TextV&'<legacyquote>xxx</legacyquote></quote>'
	  ClipPut($ClipText)
EndFunc
Als letztes müssen wir diese Funktion mit unserem Button aufrufen können.
Code:
Case $Generate
          ReadyText()
$Generate ist mein Button.

Und unser Skype Quotenfaker ist fertig! Hier zu guter letzt nochmal der ganze Code:
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=C:\Users\Leon\Desktop\Neuer Ordner\Form Skype Quote.kxf
$Form1 = GUICreate("Skype Quoten Faker", 271, 406, 192, 124)
$Label1 = GUICtrlCreateLabel("Name:", 8, 8, 35, 17)
$NameFake = GUICtrlCreateInput("NameFake", 48, 8, 217, 21)
$Label2 = GUICtrlCreateLabel("Timestamp:", 8, 40, 58, 17)
$TimeStamp = GUICtrlCreateInput("TimeStamp", 72, 40, 193, 21)
$Label3 = GUICtrlCreateLabel("Zu versendener Text:", 80, 88, 106, 17)
$Text = GUICtrlCreateEdit("", 8, 112, 257, 201)
GUICtrlSetData(-1, "Text")
$Generate = GUICtrlCreateButton("Erzeugen!", 8, 320, 257, 57)
$Label4 = GUICtrlCreateLabel("(C) by iRofl on Elitepvpers.", 16, 384, 128, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func ReadyText()
   $NameFakeV = GUICtrlRead($NameFake)
   $TimeStampV = GUICtrlRead($TimeStamp)
   $TextV = GUICtrlRead($Text)
	  $ClipText = '<quote author='&'"'&$NameFakeV&'"'&' authorname='&'"'&$NameFakeV&'"'&' timestamp='&'"'&$TimeStampV&'"'&'>'&$TextV&'<legacyquote>xxx</legacyquote></quote>'
	  ClipPut($ClipText)
EndFunc
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		 Case $Generate
			ReadyText()
		 
	EndSwitch
WEnd


Nachwort
Natürlich ist das nicht das nützlichste aller Programme, aber ich hoffe ich konnte euch weiterhelfen.
Dies ist mein erstes Coding Tutorial, also seit nicht zu hart. Freue mich natürlich auf Konstruktive Kritik und Tipps!
Ich gehe jetzt erstmal Frühstücken.

Auf ein neues, iRofl.
iRofl is offline  
Thanks
5 Users
Old 10/06/2013, 17:32   #2
 
elite*gold: 104
Join Date: Oct 2012
Posts: 2,720
Received Thanks: 593
Der Timestamp dürfte einfach nen Unixtimestamp sein.
Kannst sogar in dem Source direkt berechnen lassen das ganze, so fällt das raussuchen der timestamp dann auch noch weg

Grüße
Cambios is offline  
Old 10/06/2013, 20:53   #3
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Bei ein paar Sachen musst du mich aufklären:

- heißt es nicht AutoIt?
- wozu immer das V am Ende wenn $ doch eine Variable kennzeichnet?
- warum die Funktion "ReadyText()" wenn man das doch gleich bei dem Case eintragen könnte?
- warum die Sachen die aus der GUI ausgelesen werden in Variablen speichern wenn das Programm doch sowieso nur ein "Einzeiler" ist?
- müssen die Timestamps nicht im Unix Format sein? Da wäre es doch besser es online berechnen zu lassen statt unerfahrene User dort Datum und Uhrzeit eintragen zu lassen!
- die Funktion "ReadyText()" sollte lieber (wenn du schon auf Variablen stehst) per Parameter die Daten bekommen, dann fallen Deklarationen wie Global etc. weg.
- ich muss den Text in das Skypenachrichtenfeld kopieren, ausschneiden und wieder reinkopieren damit der Quote angezeigt wird, vieleicht könnte man das korrigieren?
- die '"' im Quellcode sind einfach nur hässlich, verwende doch lieber "", dann ersparst du dir & '"' &

Du könntest das Script noch durch den Timestamp erweitern, User könnten Datum und Uhrzeit eintragen, und du verarbeitest die Anfrage an die Website die den Timestamp erstellt.

Was noch heraussticht (aber das ist für viele wahrscheinlich nur Geschmackssache(?)) ist,
dass du die GUI zuerst erstellst und dann die Funktion.
Meiner Meinung nach sollte das andersherum geschehen, denn die GUI passt man an die Funktion an und nicht andersherum (function forms form).

Genug kritisiert, schließlich kann es ja nicht total schlecht sein.
Die Gliederung ist wunderbar gelungen und vielleicht könntest du noch Verlinkungen zu den "Kapiteln" hinzufügen, wäre noch was schönes aber nicht notwendig.


Der Unix TimeStamp (unterschiedlich lang, kommt drauf an ob mit MSEC oder nur SEC) ist die Zeit die zwischen 00:00 1. Januar 1970 und dem jetzigen Datum (bzw. dem Datum das du haben möchtest) verstrichen ist. Diese wird, wie gesagt, in SEC oder MSEC angegeben.

Es wäre besser wenn du den Stil mit der du deine Variablen benennst, etwas umänderst. Nehmen wir mal folgende Beispiele: $Generate, $TimeStamp, $NameFakeV.
$Generate wäre in diesem Fall das Handle vom Button, um zu sehen das es das Handle ist (zugegeben, bei einem kleinen Programm ist das recht unwichtig) setz ein kleines h vor dem Namen:
$hGenerate. $TimeStamp wäre ebenfalls ein Handle: $hTimeStamp.
Anhand des Präfixes kann man sofort den Typ der Variable ausmachen.

Bei $NameFakeV wird es schon etwas kritischer:
$NameFakeV sagt nur etwas über NameFake aus aber nicht über den Typ der Variable und außerdem ist das V redundant. Vorschlag: $sNameFake, was sagt dir das kleine s am Anfang? Es handelt sich um eine String Variable, bei größeren Projekten (was ja in der Zukunft von dir kommen soll) wäre es besser die Notation (auch ungarische Notation genannt) anzuwenden, da man sich im Source-Code schneller zurecht findet, das ist aber nur der Stil, also ist das jedem selbst überlassen
alpines is offline  
Old 10/06/2013, 23:36   #4
 
CallSaul's Avatar
 
elite*gold: 0
Join Date: Oct 2013
Posts: 327
Received Thanks: 65
Quote:
Originally Posted by alpines View Post
Bei ein paar Sachen musst du mich aufklären:

- heißt es nicht AutoIt?
- wozu immer das V am Ende wenn $ doch eine Variable kennzeichnet?
- warum die Funktion "ReadyText()" wenn man das doch gleich bei dem Case eintragen könnte?
- warum die Sachen die aus der GUI ausgelesen werden in Variablen speichern wenn das Programm doch sowieso nur ein "Einzeiler" ist?
- müssen die Timestamps nicht im Unix Format sein? Da wäre es doch besser es online berechnen zu lassen statt unerfahrene User dort Datum und Uhrzeit eintragen zu lassen!
- die Funktion "ReadyText()" sollte lieber (wenn du schon auf Variablen stehst) per Parameter die Daten bekommen, dann fallen Deklarationen wie Global etc. weg.
- ich muss den Text in das Skypenachrichtenfeld kopieren, ausschneiden und wieder reinkopieren damit der Quote angezeigt wird, vieleicht könnte man das korrigieren?
- die '"' im Quellcode sind einfach nur hässlich, verwende doch lieber "", dann ersparst du dir & '"' &

Du könntest das Script noch durch den Timestamp erweitern, User könnten Datum und Uhrzeit eintragen, und du verarbeitest die Anfrage an die Website die den Timestamp erstellt.

Was noch heraussticht (aber das ist für viele wahrscheinlich nur Geschmackssache(?)) ist,
dass du die GUI zuerst erstellst und dann die Funktion.
Meiner Meinung nach sollte das andersherum geschehen, denn die GUI passt man an die Funktion an und nicht andersherum (function forms form).

Genug kritisiert, schließlich kann es ja nicht total schlecht sein.
Die Gliederung ist wunderbar gelungen und vielleicht könntest du noch Verlinkungen zu den "Kapiteln" hinzufügen, wäre noch was schönes aber nicht notwendig.


Der Unix TimeStamp (unterschiedlich lang, kommt drauf an ob mit MSEC oder nur SEC) ist die Zeit die zwischen 00:00 1. Januar 1970 und dem jetzigen Datum (bzw. dem Datum das du haben möchtest) verstrichen ist. Diese wird, wie gesagt, in SEC oder MSEC angegeben.

Es wäre besser wenn du den Stil mit der du deine Variablen benennst, etwas umänderst. Nehmen wir mal folgende Beispiele: $Generate, $TimeStamp, $NameFakeV.
$Generate wäre in diesem Fall das Handle vom Button, um zu sehen das es das Handle ist (zugegeben, bei einem kleinen Programm ist das recht unwichtig) setz ein kleines h vor dem Namen:
$hGenerate. $TimeStamp wäre ebenfalls ein Handle: $hTimeStamp.
Anhand des Präfixes kann man sofort den Typ der Variable ausmachen.

Bei $NameFakeV wird es schon etwas kritischer:
$NameFakeV sagt nur etwas über NameFake aus aber nicht über den Typ der Variable und außerdem ist das V redundant. Vorschlag: $sNameFake, was sagt dir das kleine s am Anfang? Es handelt sich um eine String Variable, bei größeren Projekten (was ja in der Zukunft von dir kommen soll) wäre es besser die Notation (auch ungarische Notation genannt) anzuwenden, da man sich im Source-Code schneller zurecht findet, das ist aber nur der Stil, also ist das jedem selbst überlassen
Ich bin iRofl.


Inzwischen benutze ich die Ungarische Notierungsweise.

Habe hier immer statt $hVariable immer $VariableV genutzt.
Funktionen machen ein Skript meiner Meinung nach übersichtlicher


keine Lust alles zu lesen. gehe schlafen.


zu dem GUI ding. Ich habe das Programm mit der GUI konzipiert, danach alles mit Funktionen Versehen, meiner Meinung nach die beste Lösung, kann aber auch daran liegen das meinemeine Eltern Designer sind.
Ich möchte hinzufügen das ich 14 bin, und somit wenig Erfahrung habe.
CallSaul is offline  
Old 11/09/2013, 13:31   #5
 
elite*gold: 0
Join Date: Nov 2013
Posts: 11
Received Thanks: 0
Gibt es für Vb.net ?
DownloaderO is offline  
Old 11/09/2013, 13:36   #6
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Das ist einer der überflüssigsten Fragen die ich seit längerem gehört hab.
1. weil du den Thread wieder hochpusht und 2. deswegen, weil du alles in VB.net machen kannst was in AutoIt3 auch möglich ist.

Der Download für Vb.net ist hier nicht erhältlich (wie es der Titel schon sagt) jedoch kannst du den Source selber umschreiben, dass auch Vb.net ihn akzeptiert.
alpines is offline  
Reply


Similar Threads Similar Threads
Skype Quoten Faker
08/30/2013 - elite*gold Trading - 1 Replies
http://www.elitepvpers.com/forum/coding-tutorials/ 2818804-autoit-lets-write-skype-quoten-faker.html hab darau einen guide gemacht... viel spaß. MAN KANN DAMIT KEINE BEWEISE FÄLSCHEN, UND ES IST SOURCE,SOMIT KEINE FREEWARE!



All times are GMT +1. The time now is 15:18.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.