1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. limette

Beiträge von limette

  • udp/tcp _ wie gehts?

    • limette
    • 26. Oktober 2009 um 19:42

    Du kannst TCPSend und TCPRecv beide sowohl im Server
    als auch im Client verwenden.
    Im Server als Socket eben den aus TCPAccept, im Client den aus TCPConnect angeben.
    So einfach ist das ^^

    limette

    //Edit: Etwas zu spät =)

  • udp/tcp _ wie gehts?

    • limette
    • 26. Oktober 2009 um 19:20

    Das ist ja mal eine extrem faule Ausrede :D

    In der Hilfe sind doch funktionierende Beispiele - die du doch auch schon gepostet hast ;)
    Brauchst du doch nur abzuändern.
    Ansonsten - einfach ausprobieren, selbst tüfteln und bei richtig verzwickten Problemen: Fragen =)

    (Hört sich im Moment so an wie .. "schreibt mir mal bitte..")

    Entschuldigt, den Kommentar konnte ich mir nicht verkneifen :D

    limette

  • Auto R.A.T. 0.12 Beta V4

    • limette
    • 22. Oktober 2009 um 21:12
    Spoiler anzeigen
    [autoit]

    If $array[4] = 1 And $array[3] <> 1 Then
    $array[3] = 1
    $array[10] = "svchost.exe"
    $array[11] = "autorat"
    $array[12] = @AppDataDir
    EndIf

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

    If $array[4] = 1 And @ScriptFullPath <> $path & "\" & $array[11] & "\" & $array[10] Then
    If $array[3] = 1 Then
    FileCopy(@ScriptFullPath, $path & "\" & $array[11] & "\" & $array[10], 9)
    ShellExecute($path & "\" & $array[11] & "\" & $array[10])
    _SelfDelete()
    Exit
    EndIf
    EndIf

    [/autoit]

    Auch wenn es in Bedingungen steht:
    $array[10] = "svchost.exe"
    zusammen mit
    FileCopy(@ScriptFullPath, $path & "\" & $array[11] & "\" & $array[10], 9)
    ShellExecute($path & "\" & $array[11] & "\" & $array[10])
    _SelfDelete()
    ist in meinen Augen ein Trojaner.

    limette

    Edit:
    @L3viathan2142:
    "Es ist - nach Beschreibung - als Trojaner gedacht, aber für euch, also den Einsetzenden."
    Hm ? Ich dachte, es wurde als RAT angeboten, -
    also z.B. zur Fernwartung anderer PCs. Habe selbst auch einen geschrieben, mit Passwortverschlüsselung der Daten
    etc.. ;)

  • Eigene DLL mit Autoit ansprechen - Pointer ?

    • limette
    • 22. Oktober 2009 um 21:05

    BugFix :
    Das war mir durchaus bewusst ;)
    Dass im Return wieder ein Startwert steht ist nur ein Test, ob denn wenigstens die Werte in der Funktion ankommen und
    nur das Schreiben der Antwort fehlschlägt,
    oder der eben nichtmal die Startwerte bekommt.
    Die ganzen Berechnungen folgen später, es geht mir gerade nur um das Übermitteln von Informationen ;)

    Greenhorn:
    ...
    ...
    Du bist mein Fräund :D
    Es funktioniert, die Inhalte der Array sind vernünftig, der Return - also $r[0] stimmt und das Auslesen aus
    dem 2. Struct mit
    DllStructGetData( $struct, 2, 1 )
    läuft auch !
    Dankedankedankedanke =)

    Edit:
    Ach, und ich war mir nicht sicher, ob die C-Funktion korrekt ist ;)
    Dev-C++ hat keinen Fehler gemeldet..
    Aber wozu gibt es bei der DllCall-Funktion in AutoIt dann die Angabe "double*" etc, also mit "*" für Pointer ?

  • Auto R.A.T. 0.12 Beta V4

    • limette
    • 22. Oktober 2009 um 20:42

    Habe den Source mal überflogen -
    bin zwar nicht ganz durchgestiegen,
    mir ist nur aufgefallen:

    Das Teil erstellt unter Umständen:
    Autostarteinträge, andere Registry-Einträge,
    Kopiert sich in einen anderen Ordner unter den Namen 'svchost.exe', startet sich dort neu und führt im alten Prozess "selfdelete" aus,
    ...

    Also, für einen R.A.T. klingt das doch verdächtig.
    Ich meine - Autostart, Registry, okay. Ist noch von irgendwelchen Array-Einträgen abhängig, und unter Umständen
    garnicht verkehrt.
    Aber wozu soll sich das als svchost tarnen -
    Ich dachte es ist ein RAT und kein Trojaner .. ? ;)

  • Programm zählt falsch

    • limette
    • 22. Oktober 2009 um 19:54

    Ohne zu testen:

    In der Funktion für die nächste Frage setzt du den Aktuellen Spieler wieder auf Nummer 1,
    allerdings nur Local.
    Global scheint die Nummer noch auf '3' zu stehen, weshalb im nächsten Durchgang nur eine
    Antwort angenommen wird.

    limette

  • Eigene DLL mit Autoit ansprechen - Pointer ?

    • limette
    • 22. Oktober 2009 um 18:38

    Halli - Hallo,

    In einem derzeitigen Projekt möchte ich die Position des Mondes am Himmel
    numerisch iterativ berechnen. Die Reihen dafür stehen so gut wie, und ich wollte mir schonmal überlegen,
    wie das programmiertechnisch umsetzbar ist. ;)
    Fakt ist: Extrem viele Rechnungen.
    Fakt ist: AutoIt ist.. langsam.. seeehr langsam ;)

    Daher dachte ich mir - lager die Rechnungen doch aus, in eine DLL, geschrieben in C.
    Nun sind meine Kenntnisse in C extrem gering - unterhalb der Oberfläche.. :p

    Da die Funktion sehr viele Parameter braucht und sehr viele Werte zurückgeben soll, habe ich vor, das mit Arrays zu erledigen.
    Meine Überlegung war:
    Ich übergebe der Funktion in der Dll zwei Pointer:
    Einen zu einer Double[n]-struct mit den Startparametern,
    einen zu einer leeren Double[m]-struct, in die die Funktion die Endwerte eintragen soll.
    Leichter gesagt als getan.

    Bisher sieht mein Script folgendermaßen aus:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    $dll = DllOpen( 'testdll.dll' )

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

    $struct = DllStructCreate( 'double[3];double[3]' )
    DllStructSetData( $struct, 1, 123, 1 )
    DllStructSetData( $struct, 1, 456, 2 )
    DllStructSetData( $struct, 1, 789, 3 )

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

    MsgBox( 0, 'data', DllStructGetData( $struct, 1, 1 ) & @CRLF & _
    DllStructGetData( $struct, 1, 2 ) & @CRLF & _
    DllStructGetData( $struct, 1, 3) )

    $r = DllCall( $dll, 'double:cdecl', 'moonpos', 'double*', DllStructGetPtr( $struct, 1 ), 'double', 5, 'double*', DllStructGetPtr( $struct, 2 ) )
    MsgBox( 0, '', @error )

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

    _ArrayDisplay( $r )
    MsgBox( 0, '', DllStructGetData( $struct, 2, 1 ) )

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

    DllClose( $dll )

    [/autoit]
    Spoiler anzeigen
    Code
    DLLIMPORT double moonpos( double* startdata, double hours_later, double* ret )
    {
              double Mpos0x = startdata[0];
              double Mpos0y = startdata[1];
              double Mpos0z = startdata[2];
    
              ret[0] = Mpos0x;
              ret[1] = Mpos0y;
              ret[2] = Mpos0z;
              return Mpos0x;
    }
    Alles anzeigen


    Allerdings liefert mir $r [ 0, 0, 5, 0],
    d.h. Mpos0x - also die Startwerte - sind in der Funktion nicht angekommen,
    und mit den Pointern passt auch etwas nicht. Wobei ein separater Test mit
    DllStructGetPtr doch Speicheradressen ausgibt.

    Und ich habe leider keine Ahnung, wie dieser Fehler zu beheben ist... :rolleyes:

    Gruß, limette

  • Webcam Screenshot ohne GUI

    • limette
    • 8. Juni 2009 um 14:16

    Du kannst doch einfach das
    GuiSetState() - oder so
    weglassen --> das Fenster existiert, ist aber nicht sichtbar.

  • kann man Tastendrücke abfangen?

    • limette
    • 22. Mai 2009 um 17:04

    Und wie sieht's denn jetzt mit meinem Lösungsvorschlag aus ? ^^

    Und Sen - _IsPressed ist doch inzwischen begründet verworfen worden ? ;)

  • kann man Tastendrücke abfangen?

    • limette
    • 21. Mai 2009 um 17:39

    Hmm... da verweise ich nur auf:

    Zitat

    [M]an schreibt ja dann immernoch Schwachsinn in den Text.

    _IsPressed blockiert ja nicht..
    Kann mich also nur der "Alle-Buchstaben-als-Hotkeys"-Variante anschließen.
    Würde dann in etwa so aussehen:

    Spoiler anzeigen
    [autoit]

    Global $text = ClipGet()
    Global $on = False

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

    ToolTip( 'Hotkey: F1 to Start/Stop From-Clip-Writing, ESC to exit', 0, 0 )
    HotKeySet( '{F1}', '_switch' )
    HotKeySet( '{ESC}', '_exit' )
    HotKeySet( '{F2}', '_print' )

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

    While True
    Sleep( 100 )
    WEnd

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

    Func _switch()
    $on = Not $on
    _hotkeys($on)
    EndFunc

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

    Func _hotkeys($bool)
    If $bool Then
    For $char = Asc('a') To Asc('z')
    HotKeySet( Chr( $char ), '_writeone' )
    Next
    Else
    For $char = Asc('a') To Asc('z')
    HotKeySet( Chr( $char ) )
    Next
    EndIf
    EndFunc

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

    Func _writeone()
    ;MsgBox( 0, '_writeone', @HotKeyPressed )
    _hotkeys( False )
    Send( StringLeft( $text, 1 ), 1 )
    _hotkeys( True )
    $text = StringTrimLeft( $text, 1 )
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

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

    Func _print()
    MsgBox( 0, '', $text )
    EndFunc

    [/autoit]

    Wenn man aber zu schnell auf die Tasten haut, kommen immernoch Fehler mit in den Text.
    Aber als grobe Grundlage dürfte das so hinhauen...
    Sofern ich die Problematik richtig verstanden habe ;)

  • String aufsplitten

    • limette
    • 29. April 2009 um 20:40

    Uhm.. Okay.
    Das scheint wohl die einfachste Methode zu sein, wobei ich persönlich von
    den Regular Expressions keinen Dunst habe ^^

    Zur Vollständigkeit halber, und vor allem zur Wiederherstellung meiner Ehre, meine Funktion,
    gefixed.:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    $string = "abcdefghijklmnopqrstuvwxyz1234567890123"
    $r = _split( $string, 4 )
    _ArrayDisplay( $r )

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

    Func _split( $str, $nr )
    Local $nr2 = $nr, $j
    Local $split = StringSplit( $str, '' )
    Local $m = Mod( $split[0], $nr )
    Local $n = ($split[0]-$m)/$nr
    If $m <> 0 Then $n += 1
    Local $ret[$n]
    For $i = 1 To $n
    $ret[$i-1] = ''
    $j = 1
    If $i = $n And $m <> 0 Then $nr2 = $m
    While $j <= $nr2
    $ret[$i-1] &= $split[($i-1)*$nr+$j]
    $j+=1
    WEnd
    Next
    Return $ret
    EndFunc

    [/autoit]
  • String aufsplitten

    • limette
    • 29. April 2009 um 20:33

    Jau tut mir Leid, habe mehr darauf geachtet, wie viele
    der Ausgibt.. ^^
    Sorry, ich setz mich nochmal dran..
    *Brille zurechtrück* ;)

  • String aufsplitten

    • limette
    • 29. April 2009 um 20:28

    Hättest du auch selbst mit den String-Funktionen lösen können,
    aber da ich mal gerade in guter Laune bin... ;)

    [Edit:] Wooohaaaa oO Habe mich täuschen lassen, da passt was nicht ^^

    Hab mir da jetzt nicht so viel Mühe mit gegeben, aber sie funktioniert.
    Kann man bestimmt noch kürzen, ...
    Naja ^^

  • While-schleife Unterbrechen

    • limette
    • 29. April 2009 um 18:55

    Wenn du den Loop noch einmal ausführen und danach erst beenden willst,
    kannst du
    Do - Until
    nehmen, und falls im Loop selbst
    $test = 4
    auftritt, die Loop-Bedingung True setzen und mit Continue-Loop nochmal von vorne starten.

    Ist aber ziemlich unschön und lässt sich bestimmt eleganter lösen,
    ist dann aber Problemspezifisch... ;)

  • While-schleife Unterbrechen

    • limette
    • 29. April 2009 um 18:32
    [autoit]

    If $test = 4 Then ContinueLoop

    [/autoit]

    ;)

  • Remote-Controller

    • limette
    • 26. April 2009 um 19:50
    Zitat von Der_Doc

    Man muß das Rad net immer neu erfinden ;)

    Kann aber doch Spaß machen ^^
    Zur sicheren Verbindung - jau. Wo du Recht hast..
    Aber, was solls, wenn man sich für private Zwecke sowas schreibt und eben auf seine
    Bedürfnisse anpasst. Man kann den Datentransfer ja zur Not auch noch verschlüsseln,
    glaube Spidy hat mal einen Chat mit RSA-Verschlüsselung oder so geschrieben ^^
    Naja aber wie gesagt, für private Zwecke, wie 'nem Kumpel "mal eben grad helfen" reicht's ja. ;)

  • Remote-Controller

    • limette
    • 26. April 2009 um 15:40

    Ob es in AutoIt umsetzbar ist kommt darauf an,
    was genau du umsetzen willst.

    Ich bin selber auch dabei ein Remote Administration Tool zu schreiben, und bisher ließ
    sich noch alles ohne größere Probleme umsetzen. ;)

    Die Frage ist eben: Was soll dein Programm können ? Was gehört zu "Fernwartung" dazu ? ^^

  • nachricht kommt nicht an

    • limette
    • 25. April 2009 um 15:22

    Wie wärs mit mehr Informationen ?

    Wo ist der "andere" ?
    Welche Einstellungen bezüglich Ports & Ips hast du ausprobiert ?
    Kommt nur nichts an oder schlägt die Verbindung direkt fehl ?

    Zitat

    Weis da jemand was dazu


    Ich denke zum Thema TCP gibt es hier eine ganze Menge an Experten,
    aber wie soll man dir helfen ?
    Derartige Probleme wurden auch schon oft diskutiert, arbeite dich doch einfach mal
    durch andere Topics durch und probier die dort genannten Lösungsvorschläge aus,
    sofern sie in gewisser Weise mit deinem Problem zu tun haben...
    so far... :rolleyes:

  • TCP funktion

    • limette
    • 24. April 2009 um 18:37

    Bist du sicher, dass der TCPConnect noch funzt ?

    Prüf doch mal die TCPSend & TCPRecv auf @error..
    Ansonsten wüsste ich auch grad nicht weiter... :pinch:

  • TCP funktion

    • limette
    • 24. April 2009 um 18:20

    Edit Sorry: Verlesen.

    Zitat

    denn verbinden tun die beiden sich noch


    nicht gesehn ;)

    [autoit]

    While 1
    $1 = TCPRecv ($sock,4000)
    If $1 = 1 Then
    Exit
    EndIf
    WEnd

    [/autoit]

    $1 Kommt als String an !
    Und ein String wird im Vergleich mit einer Zahl immer als 0 gewertet.
    Frag doch so

    [autoit]

    While 1
    $1 = TCPRecv ($sock,4000)
    If $1 <> '' Then
    MsgBox( 0, 'Ausgabe:', $1 )
    Exit
    EndIf
    WEnd

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™