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. Andy

Beiträge von Andy

  • Schneegestöber

    • Andy
    • 24. Dezember 2011 um 22:51

    Ok, wenn man während der Scriptausführung Fenster öffnet, dann "Reisswolft" es etwas^^
    Also Script starten, Desktop (ohne Fenster) anzeigen, zurücklehnen, schneien lassen, entspannen.....
    Wer es abwarten kann, zuzuschauen, bis der gesamte Bildschirm voller "Schnee" liegt, der ist wahrlich entspannt :D (Screeeeeeeen!!!!)

  • DllStruct Funktionen für Autoit

    • Andy
    • 24. Dezember 2011 um 22:40

    Hi,
    ich frag mal vorsichtig, wie du überhaupt auf dieses Thema kommst....

    Denn:
    a) brauchst du für "normale" Programmierung keine Structs => Thema erledigt
    b) falls externe Dll´s verwendet werden, die einen Pointer auf einen Datenbereich als Parameter benötigen, kommst du um Structs nicht herum =>Bugfixens Tut, erledigt


    Eine Struct ist nichts anderes als ein Bereich von Daten, auf deren Position im Speicher du direkt Zugriff hast.
    Wenn du das nicht benötigst, dann brauchst du auch keine Struct!
    Allerdings hindert dich niemand daran, deine Daten (Variablen) ausschliesslich in Structs zu schreiben, und dann über Pointer zu schreiben/lesen. Dann brauchst du auch sicher keinen Obfuscator mehr, denn diesen Code kann und will sicher keiner mehr lesen^^. Funktionieren wird es schon, schneller oder langsamer ist es nicht, einfach nur eine andere Art, mit den Daten umzugehen.

  • Port-Forwarding

    • Andy
    • 24. Dezember 2011 um 20:54

    Hi,

    Zitat

    Ich habe bereits dieses Zeug von Dyndns geholt [zap]
    Eins von Dyndns.com und eins von no-ip...

    Welches "Zeug" und warum no-ip?
    Dyndns sorgt dafür, dass deine sich spätestens alle 24 Std (oder je nach Router noch öfter) von der Telekom geänderte "externe" IP (unter der du im Internet bekannt bist) den Nameservern mitgeteilt wird.
    Ich kann in meinem Router den Dyndns eintragen, somit teilt mein Router jedes mal, wenn ich eine neue IP zugeteilt bekomme, diese IP automatisch den Nameservern mit. Die Nameserver lösen dann den "Namen" (Domain) in die richtige IP auf.
    Somit ist mein Router nicht nur einige Stunden unter einer bestimmten IP erreichbar, sondern 24/7 unter einer Domain. (DynDNS = Dynamischer Domain Name Service)
    Weiterhin ist zu beachten, dass es nur bei sehr wenigen Routern möglich ist, vom "internen" Netz aus auf den (per portforwarding weitergeleiteten) Serverdienst (mit der externen IP) zuzugreifen. Es wird also fast immer ein Zugriff über einen Rechner von "außerhalb" benötigt, zur Not geht auch ein Smartphone (mit eigenem Internetzugang) zum testen...

    Zitat

    Wenn ich diese nun mit TCPNameToIP "umwandel", bekomme ich verschiedene IP's raus.

    Script? :huh:

    Diese fruchtose Diskutiererei hatten wir schon x-mal....aber weil heute Weihnachten ist, bin ich gut drauf und geb noch nen Link^^


    Zitat

    @IPAddress1 gibt mir 172.16.1.2 aus (die wird von mir auch im Server angegeben), doch wenn ich sie dort eintrage, bekomme ich folgende Meldung:
    Als IP-Adresse darf nicht die IP-Adresse des Alice IAD/Modem verwendet werden.

    Von wem kommt diese Meldung? Vom Serverprogramm^^ ? Dann wäre es echt mal interessant, dieses Script zu sehen :rolleyes: Aber das hatten wir ja bereits....

  • DllStruct Funktionen für Autoit

    • Andy
    • 24. Dezember 2011 um 19:52

    Hi,
    ich hatte schon (im Zusammenhang mit Assembler) die Geschwindigkeit von Arrays und Structs verglichen, aber diese ist in etwa gleich.
    Wenn du also selbst Dll´s schreibst und dort keine Structs benötigst, dann lass es^^

    Für GDI benötigt man Structs nur bei einigen wenigen Funktionen, Geschwindigkeitsrelevant ist das also nicht.

    Allerdings lässt sich in der Kombination mit einer Assembler-UDF und AssembleIt die Geschwindigkeit u.a. von Grafikfunktionen vervielfachen, da kommt man allerdings um die Verwendung von Structs nicht herum.

    Aber auch in "native" AutoIt lässt sich eine Bitmap pixelweise recht einfach und schnell bearbeiten, wenn man sie in eine Struct kopiert und byteweise bearbeitet.

  • Port-Forwarding

    • Andy
    • 24. Dezember 2011 um 19:04
    Zitat

    Meine Frage war nur, welche IP ich dort eintragen muss und wo ich sie finde.

    Verarschen kann ich mich alleine, denn wenn du schon so schlau bist, das Server-AutoItscript als IRRELEVANT zu bezeichnen, dann solltest du wissen, dass die IP in diesem Script enthalten ist....
    Falls der DHCP-Server dir nicht jedes mal eine neue IP verpasst....daher die Frage nach der Infrastruktur!

  • DllStruct Funktionen für Autoit

    • Andy
    • 24. Dezember 2011 um 18:57

    Hi,
    generell kannst du eine Struct wie ein Array benutzen bei gleicher Verarbeitungsgeschwindigkeit.
    Der große Vorteil gegenüber einem Array ist, daß man die Speicherstelle bzw. den Zeiger (Pointer) auf die einzelnen Inhalte der Struct benutzen kann.
    Viele (DLL-)Funktionen benötigen diese Pointer als Ubergabeparameter.
    Weiterhin sind alle Operationen, welche mit Speichern/Verändern von Daten zusammenhängen, einfach machbar, sobald deren Struktur (Struct) bekannt ist.

    Bugfix hat in seinem Tutorial einige Anwendungen beschrieben.

  • Port-Forwarding

    • Andy
    • 24. Dezember 2011 um 18:18
    Zitat

    Jedenfalls wäre es viel einfacher zu sagen, wo ich diese IP finde, als mich blöd anzumachen...

    Entschuldigung bitte, dass ich keine Gedanken lesen kann!
    Um WELCHE IP handelt es sich? Welcher Router, welches Serverprogramm, welches AutoIt-Script.
    Du gibst KEINERLEI relevante Informationen und erwartest, dass dir hier jemand hilft, und anstatt mit Infos rauszurücken, wird rumgeheult....genau der professionelle Ton, um Spezialisten dazu zu ermutigen, dir hier aus DEINER Lage zu helfen!
    Als ob die an Heiligabend nix besseres vorhätten, als darauf zu warten daß DU hier vorstellig wirst...

  • Port-Forwarding

    • Andy
    • 24. Dezember 2011 um 17:56
    Zitat

    und es gibt auch keine gescheiten Erklärungen dafür.

    das ist wahrscheinlich auch der Grund, warum einige Leute das Portforwarding in 3 Handgriffen erledigen.
    Die können bestimmt zaubern, oder denen fliegt knowhow einfach so zu ohne was dafür zu tun.
    Aber ganz bestimmt haben diese Leute keinerlei Ahnung von dem was sie tun und lesen weder die Handbücher von ihrem Router noch googeln sie nach Informationen.

    Ich denke, alle diese Leute haben einfach nur in irgendeinem Forum gepostet:"...doch da blicke ich überhaupt nicht durch und es gibt auch keine gescheiten Erklärungen dafür.." und irgendwer hat sich dann erbarmt und ne Kristallkugel rausgeholt und heftigst daran gerubbelt um an weitere wichtige Informationen zu kommen :pinch:

  • Schneegestöber

    • Andy
    • 24. Dezember 2011 um 15:20
    Zitat

    Sieht nett aus übermalt die Fenster mit dem Desktophintergrund

    öööhm, auf XP32 erscheint de rDesktop und es "schneit"
    Am unteren Bildschirmrand bleiben die Flocken dann liegen und werden höher.
    Wie sieht das bei euch aus?

    Edit //Ahhhhh, jetzt weiss ich, was ihr meint^^//

  • Schneegestöber

    • Andy
    • 24. Dezember 2011 um 11:13

    Hi,
    beim weihnachtlichen Stöbern auf der Festplatte hat sich etwas gefunden, was zumindest optisch den fehlenden Schnee ersetzt^^
    Wenn man lange genug wartet, bleibt der Schnee auch "liegen"
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    Snow Desktop.zip 584,57 kB – 372 Downloads
  • Rect Kollision

    • Andy
    • 23. Dezember 2011 um 08:32

    Hi,
    hier ist das schön erklärt....
    Es reicht aber, wenn du die "teure" Drehung nur für einen Punkt berechnest, also die Verschiebung in x- und in y-Richtung ermittelst.
    Alle anderen Eckpunkte verschieben sich um genau dieses Verhältnis.

    Und ja, es gibt auch eine Drehfunktion in GDI^^
    Die erhält man, wenn *drehen* in die Suche der AutoIt-Hilfe eingegeben wird...

  • Rect Kollision

    • Andy
    • 22. Dezember 2011 um 21:48

    Hi,
    oberste linie vom "Balken" =Gerade und Umfang vom Ball=Kreis
    Wenn Gerade und Kreis sich schneiden, dann Berührung^^

    Klick mich, ich bin ein Link zum Thema

  • GUI für DMX-Steuerung (512 Kanäle) dynamisch erstellen

    • Andy
    • 17. Dezember 2011 um 19:27

    Hi,
    Beispiel mit Buttons, aber das auf Slider auszuweiten solltest du können^^

    Spoiler anzeigen
    [autoit]

    ;by Andy

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

    $numberofbuttons = 24 ;number from 1 to 30
    Dim $buttoncontrolID[$numberofbuttons + 1]

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

    GUICreate("test")
    For $i = 1 To $numberofbuttons ;we make an array of buttons
    $buttoncontrolID[$i] = GUICtrlCreateButton(" Button " & $i, 10 + ((($i > 10) + ($i > 20)) * 100), 30 + ($i - (($i > (($i > 20) + 1) * 10) * (($i > 20) + 1) * 10)) * 30,85,30)
    Next
    $somethingbutton=guictrlcreatebutton("do something ",310,30,80,30 )

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

    ;here you could give the buttons an other text or color
    guictrlsetdata($buttoncontrolID[1] ,"Push!")
    GUICtrlSetColor($buttoncontrolID[1],0xFF00FF)
    guictrlsetdata($buttoncontrolID[13],"Push ME!")
    GUICtrlSetColor($buttoncontrolID[13],0x000FFF)
    guictrlsetdata($buttoncontrolID[17],"Push ME TOO!")
    GUICtrlSetColor($buttoncontrolID[17],0xFF0000)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $msg = ' & $msg & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Switch $msg
    Case -3 ;exit is pressed
    Exit
    case $somethingbutton
    Msgbox (0,"","Button ""do something"" is pressed")

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

    Case $buttoncontrolID[1] To $buttoncontrolID[$numberofbuttons] ;one of the "array"-Buttons is pressed
    call ("_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg))) ;names oft the functions are _arraybutton_1() _arraybutton_2().....
    If @error = 0xDEAD And @extended = 0xBEEF Then MsgBox(4096, "ERROR", "Function "&"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg))&" does not exist!")
    EndSwitch
    WEnd

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

    ;*******************functions********************************
    func _arraybutton_1()

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

    msgbox(0,"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg)),"arraybutton pressed: "&GUICtrlRead($msg))
    endfunc
    ;
    ; here are the funcs of the buttons
    ;
    ;
    func _arraybutton_13()
    msgbox(0,"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg)),"arraybutton pressed: "&GUICtrlRead($msg))
    endfunc

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

    func _arraybutton_17()
    msgbox(0,"_arraybutton_"&($numberofbuttons-($buttoncontrolID[$numberofbuttons]-$msg)),"arraybutton pressed: "&GUICtrlRead($msg))
    endfunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • feststellen, ob ein Punkt auf der Fläche liegt

    • Andy
    • 16. Dezember 2011 um 20:38

    Hi,
    Punkt in Fläche in 3D => kompliziert und extrem aufwendig^^. Bei Polygonen nur ohne weiteres berechenbar, wenn das Polygon selbst nur Punkte in einer Ebene hat.

    In 2D sehr simpel:
    Koordinaten des Polygons im Uhrzeigersinn "ablaufen". Zwischen 2 aufeinanderfolgenden "Ecken" besteht eine Gerade. Wenn Punkt immer rechts von allen Geraden ist, ist er innerhalb des Polygons, ansonsten ausserhalb.

  • KometPlanet - Planetenspiel (Update 2 17.12.2011)

    • Andy
    • 16. Dezember 2011 um 20:16

    Hi, coole Idee! :thumbup:
    Ich würde aber eher eine Auswahlliste der verfügbaren Maps vorziehen.
    Einige Karten sind ziemlich schwer^^

  • Transparente Bilder und GDI+

    • Andy
    • 12. Dezember 2011 um 23:14
    Zitat

    da nehm ich wohl doch lieber GDI+.

    mit was du die "Sprites" machst, ist dir überlassen^^
    Ich würde die Sprites als X*Y Pixel große Bitmaps zeichnen (mit irgendeinem Zeichenprogramm, zur Not geht Paint) und dann in den Backbuffer blitten.

    UEZ, Marsi und viele andere haben hier im Forum schon gezeigt, daß sich auch in Autoit schnelle grafische Spiele realisieren lassen.
    An der reinen "Darstellung", egal ob durch GDI oder per Win-API, hapert es eher selten^^, siehe Beispiel! 50 transparente Sprites bewegen sich auf einem rotierenden Hintergrund mit 50-60FPS@2.5Ghz.

    Meistens liegt es an den mehr oder weniger aufwendigen Berechnungen, die durch Autoit extrem ausgebremst werden, Kollisionsberechnung, Positionsvergleiche usw.
    Aber die Berechnungen im "inner Loop" lassen sich auch in eine einfache C- oder Assembler-dll auslagern und dann einfach callen.

  • Transparente Bilder und GDI+

    • Andy
    • 12. Dezember 2011 um 21:53

    Hi,
    irgendwo hier im Forum geistert ein Script von mir rum, ich habs aber selbst nicht mehr gefunden^^
    Hier nochmal eine Demo, was man ohne GDI machen kann....
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    testx12_forum3.zip 163,97 kB – 229 Downloads
  • DllCall gibt bei Callback ein Pointer zurück --> auslesen?

    • Andy
    • 12. Dezember 2011 um 21:05

    Hi Spider,
    ich hab mich jetzt nicht genau reingefuchst, aber wenn dir die Funktion einen Pointer zurückgibt, dann kannst du sehr wohl mit dllstruct() diesen Datenbereich auslesen.
    Einfach an der Position des Pointers mit dllstructcreate("dword[10000]",$pointer_zum_overview-Buffer) eine Struct erstellen und dann per dllstructgetdata() die Daten lesen.

  • Dateien auf Veränderung prüfen ...

    • Andy
    • 11. Dezember 2011 um 13:20

    Hi,
    dafür sind die "_Crypt"-Funktionen in AutoIt geeignet!
    Diese solltest du in der Hilfe finden

  • Punkte eines Kreises berechnen

    • Andy
    • 11. Dezember 2011 um 13:08

    Hi,
    die Punkte auf dem Kreis sind auch ohne trigonometrische Funktionen (sin, cos usw.) zu berechnen.
    Kreisfunktion: x²+y²=1 (Einheitskreis) bzw. (x-xm)²+(y-ym)²=r²

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

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

    ;Kreisfunktion: x²+y²=1 bzw. (x-xm)²+(y-ym)²=r²
    ;Kreisdaten
    $mittelpunkt_x = 350
    $mittelpunkt_y = 350
    $radius = 300
    $radius_2 = $radius ^ 2

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

    $hgui = GUICreate("Kreis", 700, 700)
    GUISetState()

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hgui)
    $hPen = _GDIPlus_PenCreate()

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

    ;zu jeder x-Koordinate den passenden Pixel auf der y-Achse bestimmen
    For $x = 0 To $radius * 0.7071; 8 mal ein Achtelkreis ergibt einen ganzen Kreis; 0.771 = 1/2 * Wurzel aus 2 = sin(45) = cos(45)
    $y = Sqrt(($radius_2) - ($x ^ 2)) ;Punkt auf Kreis berechnen
    ;einzelne Pixel setzen
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $x, $mittelpunkt_y + $y, 1, 1, $hPen)
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $x, $mittelpunkt_y + $y, 1, 1, $hPen)

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

    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $x, $mittelpunkt_y - $y, 1, 1, $hPen)
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $x, $mittelpunkt_y - $y, 1, 1, $hPen)

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

    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $y, $mittelpunkt_y - $x, 1, 1, $hPen)
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x + $y, $mittelpunkt_y + $x, 1, 1, $hPen)

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

    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $y, $mittelpunkt_y - $x, 1, 1, $hPen)
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $y, $mittelpunkt_y + $x, 1, 1, $hPen)

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

    Next

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

    ;Vergleich zum GDI+ -Kreis, der den vorhergehenden Kreis "übermalt"
    Sleep(1000)
    $hPen = _GDIPlus_PenCreate(0xFF00FF00,2,2)
    _GDIPlus_GraphicsDrawEllipse($hGraphic, $mittelpunkt_x - $radius, $mittelpunkt_y - $radius, $radius * 2, $radius * 2, $hPen)

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = -3

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

    ; Clean up resources
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit]

    Für die (schnelle) grafische Darstellung des Kreises ist wichtig, daß jedem "x-Pixel" nicht mehr als die benötigten "y-Pixel" zugeordnet sind!
    Daher wird meist nicht ein "ganzer" Kreis berechnet, sondern nur ein Achtel-Kreis, und die Punkte an der x- und y-Achse gespiegelt!
    Somit reduziert sich die aufwändige Berechnung auf 12.5%, bzw beschleunigt die Darstelllung um Faktor 8!

    Weiterhin besteht der Vorteil, zu zu jeder x-Koordinate auch nur genau eine y-Koordinate berechnen zu müssen.
    Denn zwangsläufig benötigt man für die Dastellung eines geschlossenen Kreises mehr als die Anzahl von 4*Radius Pixel, nämlich Wurzel aus 2 (1.414) mal mehr...

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™