Hi,
Da ich lang keinen Code mehr veröffentlicht habe muss jetzt mal wieder was herhalten.
Heute habe ich mal meine Facebook™-Pinnwand voll gespamt mit zwei kleinen Spielen. Das erste nennt sich „Wie schnell kann man in 10 Sekunden klicken?„ und das andere nannte sich „Tastatur Zertrummern„.
Also zum Ersten.
Hier geht es ganz einfach darum so oft wie irgendwie möglich auf einen Button im Web zu machen. Damit ich das so einfach mal schnell Programmieren konnte braucht ich eine Programmiersprache. Dazu fiel mir spontan .Net ein. Also alles in C# programmiert.
// .Net Standard Verweis
using System;
// .Net Verweis zum einbinden von DLL's
using System.Runtime.InteropServices;
// .Net Verweis für Objekte wie z.B. Cursor bzw. Screen
using System.Windows.Forms;
// ApplicationsName / Namespace
namespace ClickApplication
{
// Klassenname
class clsClick
{
// Windows Konstanten für Mouse Down bzw. Up
private const Int32 MouseEventLeftDown = 0x0002;
private const Int32 MouseEventLeftUp = 0x0004;
/* DLL Verweis auf die User32.dll zum Importieren der
/ mouse_event Funktion */
[DllImport("user32", EntryPoint = "mouse_event")]
private static extern void mouse_event(UInt32 dwFlags,
UInt32 dx,
UInt32 dy,
UInt32 dwData,
IntPtr dwExtraInfo);
// Start Punkt
static void Main(string[] args)
{
/* Cursor Position herausfinden und auf API Schnittstellenfunktion
/ übertragen ( * 65535 / Primärmonitor(Breite/Länge)) */
UInt32 cur_x = Convert.ToUInt32(Cursor.Position.X * 65535
/ Screen.PrimaryScreen.Bounds.Width);
UInt32 cur_y = Convert.ToUInt32(Cursor.Position.Y * 65535
/ Screen.PrimaryScreen.Bounds.Height);
/* Jeder Schleifendurchgang ist ein Klick
/ (10k Klicks (kann lang dauern)) */
for (int i = 0; i < 9999; i++)
{
/* Einmal MouseEvent ausführen mit Down + Up für
/ Beide Events, und einem Neuen Pointer als Event Verweis */
mouse_event(MouseEventLeftDown + MouseEventLeftUp,
0, 0, 0, new System.IntPtr());
} // End For
} // End Main
} // End Class
} // End Namespace
Nachdem das dann geschrieben war, habe ich gemerkt das es ziemlich gemächlich ausgeführt wird und man in 10 Sekunden nicht über 500 Klicks hinauskommt mit C#. Also VB.Net Test, naja wie zu erwarten -> genauso langsam!
Was bleibt als Alternative? – Java? C++? Scriptsprache?
Also Java habe ich einfach noch nie API aufrufe gemacht geschweige denn irgendwas vergleichbares versucht…
Mit Scriptsprachen habe ich keinerlei positive Erfahrungen sobald irgendwas Richtung Maus geht, aber ich glaub Klicks sind einfach nichts für Scripte.
Also C++ bzw. C Classic.
// API Verweis
#include <windows.h>
// Konstanten Einbindung
using namespace std;
// Start Punkt
int main()
{
// Umso Größer der Datentyp umso
// schneller die For Schleife! (deswegen !Long!)
long iCnt;
// Bis wohin => Egal dementsprechend wie viele Klicks du haben möchtest.
for(iCnt = 0; iCnt < 1234; iCnt++)
{
// Mouse Event ist das gleiche wie in C# nur
// das wir keinen Pointer angeben MÜSSEN.
mouse_event(MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
// Die zwei Konstanten kommen genau wie die
// Funktion selbst aus der windows.h
// Die restlichen 4 Parameter können z.b. bei
// MouseeventF_Move die Position des Mauszeigers ändern.
}
// Return da int Main()
return 1;
}
Also damit getestet und zwar erfolgreich! Hat super geklappt, Mauszeiger auf den Button und schon kommen unglaubliche werte innerhalb von 10 Sekunden zusammen.
So das jetzt mal zur ersten App. Jetzt kommen wir zu der anderen, da war klar was ich brauche:
SendKeys
Damit war die Sache gegessen, schnelles VB-Script runter geschrieben ablaufen lassen, FERTIG.
REM Generierung eines WScript >> Shell Objektes Namens "objShell"
SET objShell = WScript.CreateObject("Wscript.Shell")
REM Schleife über 1001 Elemente
FOR iCnt = 0 TO 1000
REM Ohne ein Päuschen gibt es
REM einen Überlauf... also "Sleep"!
WScript.Sleep 50
REM Dann nur noch irgendwelche
REM Buchstaben versenden schon Passt die Sache!
objShell.SendKeys("abcdefghijklmnopqrstuvwxyz")
REM Schleifen abschluss
NEXT
So das war es für heute von meiner Seite viel Spaß mit den Kleinen Scripten.
„Cheaten bei #Facebook-Mini-Apps“ weiterlesen