Mausklicks+Text-Recorder

  • Hallo Leute,
    bin hier neu im Forum, hab aber schon einige autoit kenntnisse.
    Ich würde gerne ein Programm machen, welches stur jeden mausklick und jeden tastendruck aufnimmt/recorded.
    Das programm soll einfach nur eine kleine GUI haben und die oben genannten funktionen beinhalten.
    Ich würde mich freuen, wenn der Bot keine begrentze aufnahmezeit hat. Zudem wäre es gut, eine "recordete" Datei in einem bestimmten format zu speichern, welches der Bot dann wieder aufrufen kann, um die schonmal ausgeführte Aktion nicht nochmal wieder hohlen zu müssen.

    Ich würde mich sehr freuen, wenn mir jmd. so eine .au3 Datei erstellen könnte.
    Die GUI muss nichts tolles sein, sondern nur sowas in etwa beinhalten:
    [Blockierte Grafik: http://www3.pic-upload.de/thumb/25.01.10/h4ehn4le4hkj.jpg]
    Außerdem sollte, wie auf dem Bild hier nicht zu sehen, einen Button mit "Record speichern" oder so in der Art haben.
    Um das erneute aufnehmen eines Records zu vermeiden.
    Ich hoffe ich werde hier gut in die Communty aufgenommen & bekomme gleich eine kleines Hilfe bei diesem kleinen "Projekt".

    lg ScyLoon

    €DiT:
    Habe ich denn etwas falsch gemacht?
    Ich habe das gefühl im richtigen Bereich zu sein & es geht nicht um ein Spiel! Was habe ich denn nur falsch gemacht?

    PS: Hat jmd davon eine ahnung?
    ?(

    Einmal editiert, zuletzt von ScyLoon (25. Januar 2010 um 22:05)

  • Was habe ich den falsch gemacht? Sowie ich das sehe ist das der bereich für Fragen und um ein spiel geht es auch nicht.
    Weitere Fehler meinerseits fallen mir nicht ein.

    Hoffe hat jmd. davon ahnung.

    lg

  • Hey,

    da du mir damit wohl mitteilein möchtest, dass ich damit einen keylogger machen möchtest, liegst du falsch.
    Ich möchte abläufe auf meinem PC damit automatisieren. Es soll kein Keylogger sein, denn 1. bräuchte man damit nicht so komplizierte methoden wie ich sie möchte und 2. könnte man sich ja einsatz bereit logger runterladen, sodass ich das dann ja wohl hier nicht posten würde.
    Dies soll in keiner Art ein Virus, ein Keylogger o.ä. werden! Es soll einfach nur abläufe, die ich in der nächten zeit öfters brauche aufnehmen und wieder identisch "abspielen". Da ich aber immer mal wieder verschiedene abläufe brauche, möchte ich nicht jedes mal das script umschreiben müssen, sondern nur einfach nur 1x den ganzen process durchlaufen & aufnehmen. Somit spare ich mir eine menge Art.

    lg

    Hoffe ich glaubt jetzt nicht immernoch, dass ich daraus einen keylogger machen möchte!
    Es soll mich einfach nur unterstützen und arbeitsablaufe verkürzen, ohne das ich jedes mal ein scrip umschreiben muss.

  • AutoIt hat sowas bereits "vorinstalliert". Geh mal in Scite auf Tools -> Au3Recorder bzw. Tools -> AutoItmacrogenerator.
    Ich habe auch vor laaanger laaaanger Zeit mal sowas gemacht muss es nur mal raussuchen

    Hier ist es:
    Wie gesagt schon sau alt, und es war auch nur ein kurzes Script um jemandem im Forum zu helfen, deswegen ist es nicht zur Perfektion ausgereift.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <Misc.au3>
    #include <String.au3>
    _Singleton(@ScriptName)
    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $rGO = False, $rAWIN = "Unbestimmt", $rREC, $rTIME, $rMPOS, $rMNPOS, $rPRESSED
    Dim $rKEYLIST[117][2] = [ _
    ["01", "Left"],["02", "Right"],["04", "Middle"],["05", "Windows 2000/XP: X1"],["06", "Windows 2000/XP: X2"],["08", "BACKSPACE"],["09", "TAB"],["0C", "CLEAR"],["0D", "ENTER"],["10", "SHIFT"],["11", "CTRL"],["12", "ALT"],["13", "PAUSE"],["14", "CAPSLOCK"],["1B", "ESC"],["20", "SPACE"],["21", "PGUP"],["22", "PGDN"],["23", "END"],["24", "HOME"],["25", "LEFT"],["26", "UP"],["27", "RIGHT"],["28", "DOWN"],["29", "SELECT"],["2A", "PRINT"],["2B", "EXECUTE"],["2C", "PRINTSCREEN"],["2D", "INS"],["2E", "DEL"], _
    ["30", "0"],["31", "1"],["32", "2"],["33", "3"],["34", "4"],["35", "5"],["36", "6"],["37", "7"],["38", "8"],["39", "9"],["41", "A"],["42", "B"],["43", "C"],["44", "D"],["45", "E"],["46", "F"],["47", "G"],["48", "H"],["49", "I"],["4A", "J"],["4B", "K"],["4C", "L"],["4D", "M"],["4E", "N"],["4F", "O"],["50", "P"],["51", "Q"],["52", "R"],["53", "S"],["54", "T"],["55", "U"],["56", "V"],["57", "W"],["58", "X"],["59", "Y"],["5A", "Z"],["5B", "LWIN"],["5C", "RWIN"], _
    ["60", "NUMPAD0"],["61", "NUMPAD1"],["62", "NUMPAD2"],["63", "NUMPAD3"],["64", "NUMPAD4"],["65", "NUMPAD5"],["66", "NUMPAD6"],["67", "NUMPAD7"],["68", "NUMPAD8"],["69", "NUMPAD9"],["6A", "Multiply"],["6B", "NUMPADADD"],["6C", "Separator"],["6D", "NUMPADSUB"],["6E", "NUMPADDOT"],["6F", "NUMPADDIV"],["70", "F1"],["71", "F2"],["72", "F3"],["73", "F4"],["74", "F5"],["75", "F6"],["76", "F7"],["77", "F8"],["78", "F9"],["79", "F10"],["7A", "F11"],["7B", "F12"],["7C-7F", "F13 - F16"],["80-87H", "F17 - F24"], _
    ["90", "NUMLOCK"],["91", "SCROLLLOCK"],["A0", "LSHIFT"],["A1", "RSHIFT"],["A2", "LCTRL"],["A3", "RCTRL"],["A4", "TAB"],["A5", "Right MENU"],["BA", ";"],["BB", "="],["BC", ","],["BD", "-"],["BE", "."],["BF", "/"],["C0", "`"],["DB", "["],["DC", "\"],["DD", "]"] _
    ]

    [/autoit] [autoit][/autoit] [autoit]

    $dll = DllOpen("user32.dll")

    [/autoit] [autoit][/autoit] [autoit]

    #Region - GUI Create
    $bGUI = GUICreate('B2F21C7751E37B8C196D9A2DC579C62DE28CC42B', 100, 50, 0, 0, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
    GUISetOnEvent($GUI_EVENT_CLOSE, "_rExit")
    $bGO = GUICtrlCreateButton('Start', 0, 0, 100, 25)
    GUICtrlSetOnEvent(-1, "_tGo")
    $bSLEEP = GUICtrlCreateCheckbox("Sleep's?", 5, 25)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUISetState()
    #EndRegion - GUI Create

    [/autoit] [autoit][/autoit] [autoit]

    Func _tGO()
    If $rGO Then
    $rGO = False
    _ArrayAdd($rREC, "#Endregion --- SEuBo's Recorder generated code ---")
    _FileWriteFromArray(@TempDir & "\Recorded.txt", $rREC)
    ShellExecuteWait(@TempDir & "\Recorded.txt")
    Else
    $rGO = True
    GUICtrlSetData($bGO, 'Click here to stop')
    Dim $rREC[3] = ["#region --- SEuBo's Recorder generated code ---", "Opt(""MouseCoordMode"",0)", "Opt(""WinTitleMatchMode"",3)"]
    $rMNPOS = MouseGetPos()
    $rTIME = TimerInit()
    Opt("GUICloseOnESC", 0)
    EndIf
    EndFunc ;==>_tGO

    [/autoit] [autoit][/autoit] [autoit]

    Func _rExit()
    Exit
    DllClose($dll)
    EndFunc ;==>_rExit

    [/autoit] [autoit][/autoit] [autoit]

    Func _addRegData()
    If GUICtrlRead($bSLEEP) = 1 Then _ArrayAdd($rREC, "Sleep(" & Round(TimerDiff($rTIME)) & ")")
    $rMPOS = MouseGetPos()
    If WinGetHandle("") <> $rAWIN Then
    $rAWIN = WinGetHandle("")
    $rMPOS = MouseGetPos()
    _ArrayAdd($rREC, "WinWait(""" & StringReplace(WinGetTitle($rAWIN), '"', '""') & ""","""")")
    _ArrayAdd($rREC, "If Not WinActive(""" & StringReplace(WinGetTitle($rAWIN), '"', '""') & ""","""") Then WinActivate(""" & StringReplace(WinGetTitle($rAWIN), '"', '""') & ""","""")")
    EndIf
    $rTIME = TimerInit()
    EndFunc ;==>_addRegData

    [/autoit] [autoit][/autoit] [autoit]

    Func _addMouseData()
    If $rMPOS[0] <> $rMNPOS[0] Or $rMPOS[1] <> $rMNPOS[1] Then _ArrayAdd($rREC, "MouseMove(" & $rMPOS[0] & "," & $rMPOS[1] & ")")
    $rMNPOS = MouseGetPos()
    _ArrayAdd($rREC, "MouseDown(""" & $rKEYLIST[$rPRESSED][1] & """)")
    $rTIMEPRESSED = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Sleep(10)
    Until Not _IsPressed($rKEYLIST[$rPRESSED][0], $dll)

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($bSLEEP) = 1 Then _ArrayAdd($rREC, "Sleep(" & Round(TimerDiff($rTIMEPRESSED)) & ")")

    [/autoit] [autoit][/autoit] [autoit]

    If $rMPOS[0] <> MouseGetPos(0) Or $rMPOS[1] <> MouseGetPos(1) Then _ArrayAdd($rREC, "MouseMove(" & MouseGetPos(0) & "," & MouseGetPos(1) & ")")
    _ArrayAdd($rREC, "MouseUp(""" & $rKEYLIST[$rPRESSED][1] & """)")
    EndFunc ;==>_addMouseData

    [/autoit] [autoit][/autoit] [autoit]

    Func _addKeyboardData()
    Local $CTRLK = ""
    If _IsPressed(10, $dll) Then $CTRLK &= "+"
    If _IsPressed(11, $dll) Then $CTRLK &= "^"
    If _IsPressed(12, $dll) Then $CTRLK &= "!"
    $rTIMEPRESSED = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Sleep(10)
    Until Not _IsPressed($rKEYLIST[$rPRESSED][0], $dll)

    [/autoit] [autoit][/autoit] [autoit]

    If TimerDiff($rTIMEPRESSED) < 250 Then
    _ArrayAdd($rREC, "Send(""" & $CTRLK & "{" & StringLower($rKEYLIST[$rPRESSED][1]) & "}"")")

    [/autoit] [autoit][/autoit] [autoit]

    Else
    _ArrayAdd($rREC, "Send(""" & $CTRLK & "{" & StringLower($rKEYLIST[$rPRESSED][1]) & " down}"")")
    If GUICtrlRead($bSLEEP) = 1 Then _ArrayAdd($rREC, "Sleep(" & Round(TimerDiff($rTIMEPRESSED)) & ")")
    _ArrayAdd($rREC, "Send(""" & $CTRLK & "{" & StringLower($rKEYLIST[$rPRESSED][1]) & " up}"")")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_addKeyboardData

    [/autoit] [autoit][/autoit] [autoit]

    #Region - GUI SelectLoop
    While Not $rGO
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Local $m[4] = ['01', '02', '03', '04']
    Local $k[105] = ['05', '06', '07', '08', '09', '0C', '0D', '13', '14', '1B', '20', '21', '22', '23''24', '25', '26', '27', '28', '29', _
    '2A', '2B', '2C', '2D', '2E', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4A', '4B', '4C', _
    '4D', '4E', '4F', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5A', '5B', '5C', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6A', _
    '6B', '6C', '6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7A', '7B', '7C', '80', '90', '91', 'A4', 'A5', 'BA', 'BC', 'BE', 'BF', 'C0', 'DB', 'DC', 'DD']

    [/autoit] [autoit][/autoit] [autoit]

    While $rGO * Sleep(10)
    If WinGetTitle("[ACTIVE]") <> "B2F21C7751E37B8C196D9A2DC579C62DE28CC42B" Then
    For $i = 0 To UBound($m) - 1
    If _IsPressed($m[$i], $dll) Then
    _addRegData()
    $rPRESSED = _ArraySearch($rKEYLIST, $m[$i])
    _addMouseData()
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($k) - 1
    If _IsPressed($k[$i], $dll) Then
    _addRegData()
    $rPRESSED = _ArraySearch($rKEYLIST, $k[$i])
    _addKeyboardData()
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #EndRegion - GUI SelectLoop

    [/autoit] [autoit][/autoit] [autoit]

    DllClose($dll)

    [/autoit]
  • Jo, Fehler sind noch drin...
    da ist irgendwo ein Anfürungszeichen zu viel drin oder an der falschen Stelle.

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

    • Offizieller Beitrag

    Was habe ich den falsch gemacht?


    :D Es war nur in vorbeugender Weise gedacht, da leider viele User hier nach Unterstützung für Gamebots suchen (leider).
    Wenn du etwas automatisieren möchtest, ist "rumklicken" immer das letzte (da schlechteste) Mittel. Nur notwendig, wenn die zu steuernde Anwendung keinerlei Windowskonforme Controls verwendet.
    Überprüfe das mit dem 'AutoIt Window Info' Tool.

  • ich wette das das niemand lesen wird, weshalb ich vielleicht eine neue frageerstellen werde

    falls es doch jemand liest:
    gibt es ein tutorial von jenem recorder bzw kann jmnd eins machen

    danke im voraus

    mfg robertmaxity

  • Leichenschänder - Es hat Key-Logger Potential, der Support dafür folgt nciht;
    Wie du es auf deinem Rechner bedienst steht da !

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Wisch dir ertsmal den Schlaf aus den Augen.
    Das einzige existente Tool das hier angesprochen wird ist der AutoIt-Macrogenerator.

    Nenn mir einen einzigen vernünftigen Grund, warum ihm jetzt niemand erklären sollte, wie der funktioniert? Magst demjenigen dann den Hintern versohlen?

  • ich schlafe nicht i2c ?
    Ich meinte "was für deinen rechner geht steht da" ...
    er hätte ja auch den Tool-Vorsteller PWNen (ich meine PNen) können ...

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • gibt es ein tutorial von jenem recorder bzw kann jmnd eins machen


    Da geht's nicht um irgendwas selbstgeschriebenes des TS. Zumal der ja nichtmal was gebacken bekommen hat.
    Was soll er den TS nach einem Tut für's Makrotool fragen wenn der das nichtmal kannte?

    Lassen wir die Leiche wieder in den Tiefen des Forums verschwinden, bitte.