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

Beiträge von monkey

  • fehler mit Sinuns

    • monkey
    • 30. Januar 2008 um 22:22

    Hi,

    Ich versuche die Berechnung für die Fläche eines Kreissegments zu automatisieren.
    [Blockierte Grafik: http://upload.wikimedia.org/math/e/d/5/ed596d7edc629352de5f04ddf7379d2a.png]

    Aber in der Formel taucht Sinus auf, und der wird in Autoit anscheinend nicht richtig berechnet.
    Als sinus für 180 bekomm ich -0,8011... raus und das kann nich stimmen.

    Jetzt frag ich mich wie ich das Problem umgehen\beseitigen kann.

    Hier ist der Code:

    [autoit]

    func flaeche_kreissegment($r, $alpha)
    $Flaeche_Kreissegment1= $pi*$alpha/360
    $Flaeche_Kreissegment2=sin($alpha)/2
    $Flaeche_Kreissegment3=$Flaeche_Kreissegment1-$Flaeche_Kreissegment2
    $Flaeche_Kreissegment4=$r^2
    $Flaeche_Kreissegment=$Flaeche_Kreissegment4*$Flaeche_Kreissegment3

    msgbox(0, "Ergebnis", "Das Kreissegment hat eine Größe von "&$Flaeche_Kreissegment)
    EndFunc

    [/autoit]


    Es wäre schön wenn ihr mit sagen könntet ob ich einfach nur zu doof bin um den Befehl richtig ein zutippen und ob es wiklich ein Fehler in Autoit ist.

    Falls es eingenverschuldung ist bitte ich dies zu entschuldigen. :)

  • DLL Verständniss verbessern

    • monkey
    • 14. Dezember 2007 um 14:41

    Wenn ich dieses Script ausführe dann sollte doch eigentlich das Notepad aktiviert werden oder nicht?

    [autoit]

    $dll=DllOpen("user32.dll")
    $hwnd = WinGetHandle("Unbenannt - Editor")
    dllcall($dll, "long", "AnimateWindow", "hwnd", $hwnd, "DWORD", 200, "int", "AW_ACTIVATE")
    DllClose($dll)

    [/autoit]

    Aber da tut sich trotzdem nichts.
    ?(

  • DLL Verständniss verbessern

    • monkey
    • 14. Dezember 2007 um 08:24

    Bei mir gibt der APIViewer wenn ich nach AW_ACTVATE suche folgendes wieder.

    [autoit]

    Public Const AW_ACTIVATE As Long = &H20000

    [/autoit]

    [Blockierte Grafik: http://ugly.plzdiekthxbye.net/large/l030.gif]

  • DLL Verständniss verbessern

    • monkey
    • 14. Dezember 2007 um 01:02

    Tut mit leid das ich das Thema schon wieder aufwärmen muss aber bei mir sind da immernoch einige Unklarheiten vorhanden.

    Angenommen wir wollen in der user32.dll die Funktion AnimateWindow() benutzen

    Spoiler anzeigen
    Code
    BOOL AnimateWindow(
     HWND hwnd,
     DWORD dwTime,
     DWORD dwFlags
     );

    Dann ist der Rückgabewert BOOL aber da DllCall BOOL nicht kennt ist es also long so wie ich das von Bernd670 verstanden habe.
    So und jetzt fangen die Probleme an.

    Autoit verlang einen Type und einen Parameter.

    [autoit]

    DllCall ( "dll", "return type", "function" [, "type1", param1 [, "type n", param n]] )

    [/autoit]

    So wie ich das sehe ist der Type bei beiden(dwTime, dwFlags) DWORD aber wenn ich das einsetze dann tut sich da nichts.
    In der Autoit Hilfe steht das DWORD eine 32bit Integer sei, das mag bei dem dwTime noch passen aber bei dwFlags sieht es für mich eher so aus als wäre es ein String.
    Aber auch dann tut sich da herzlich wenig.

    Ich hab da mal mein Glück versucht aber es hat sich nichts getan.
    Hier mein Grundgedanke:

    [autoit]

    $dll=DllOpen("user32.dll")
    $hwnd = WinGetHandle("Unbenannt - Editor")
    $tset=dllcall($dll, "long", "AnimateWindow", "hwnd", $hwnd, "DWORD", 200, "int", "AW_ACTIVATE")

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

    if $tset=0 Then
    msgbox(0, "Error", "Es ist ein Fehler aufgetreten")
    ElseIf $tset <> 0 then
    MsgBox(0, "Erfolg", "Funktion wurde erfolgreich durchgeführt.")
    EndIf
    DllClose($dll)

    [/autoit]
  • Häufigkeit von Zufallszahlen

    • monkey
    • 12. Dezember 2007 um 15:27

    Ich denke es wäre besser wenn du dein Script beschreiben würdest und dann auch im Quelltext aus kommentierst was du da machst.

    Ich weiss so auf den ersten Blick nicht was es macht und wieso.

  • Computer über USB-Stick sperren

    • monkey
    • 11. Dezember 2007 um 15:59

    Hi,

    ich möchte gerne ein LAN-Tool schreiben das die Tastatur, die Maus sperrt und den Bildschirm schwarz werden lässt, wenn der USB-Stick nicht angeschlossen ist.
    Ich denke ich hab hier im Forum schon mal so ein Script gesehen aber es leider nicht wiedergefunden.

    Ich hab hier schon mal einen Ansatz.


    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    $Usbser= 2418238033
    $reg=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Secure")
    if not @error then
    while 1

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

    $var = DriveGetDrive( "all" )
    If NOT @error Then
    For $i = 1 to $var[0]
    $ser=DriveGetSerial($var[$i])
    if $ser=$Usbser Then
    BlockInput(0)
    ExitLoop
    Else
    BlockInput(1)
    if WinExists("Windows Task-Manager") then WinKill("Windows Task-Manager")
    EndIf

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

    Next
    EndIf
    sleep(500)

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

    WEnd

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

    Else
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Secure", "REG_SZ", @ScriptFullPath)
    EndIf

    [/autoit]

    Mein Problem liegt da das ich nicht weiss wie ich den Bildschirm schwarz werden lassen kann.
    Auch ist ein sehr grossen Problem das er den Task-Manager auch noch beendet wenn der USB-Stick eingesteckt ist, damit kann man das Script nicht mehr beenden und den Task-Manager öffnen.

    Danke schon mal für eure Hilfe

  • Ich find die Fehler im Code nicht

    • monkey
    • 21. November 2007 um 22:53

    Ich habe es jetzt so geschrieben aber, er listet nich alle Primzahöen auf erst ab 53. Jetzt frage ich mich warum er die davor nich aufschreibt.

    [autoit]

    $o=100
    $s=$o/2
    $file=FileOpen("Prim.txt", 1)

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

    for $i=2 to $o step 1

    for $r=2 to $s
    $e= $i/$r

    if IsFloat($e) =0 Then
    ExitLoop
    EndIf


    If $r=$s and IsFloat($e)= 1 Then
    FileWrite($file, $i&@CRLF)
    ExitLoop
    EndIf

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

    Next

    Next
    FileClose($file)

    [/autoit]

    €: Es ist immer die erstehälte der Zahl $o die fehlt wenn man 200 als $o definiert werden primzahlen zwischen 100 und 200 errechnet

    €²: ..... zu früh gefreut -.-

  • Ich find die Fehler im Code nicht

    • monkey
    • 21. November 2007 um 19:01

    Ich glaub ich hab da en paar ganz dicke Denkfehler drin.
    Das Script soll eigentlich Prim zahlen berechnen, tut es aber nich.
    Irgendwo muss ich da noch en paar Fehler drin haben.

  • Ich find die Fehler im Code nicht

    • monkey
    • 21. November 2007 um 18:23

    Entschuldigung aber ich steh' gerade ein bisschen auf'm Schlauch.

    Ich wollte mal fragen warum mein Script immer eine Fehler Meldung ausgibt, ich hab das schon oft duch geschaut aber find meinen Fehler nicht. ?(

    [autoit]


    $o=200
    $s=2
    $file=FileOpen("Prim.txt", 1)

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

    for $i=2 to $o step 1

    for $r=2 to $s
    $e= $i/$r

    if IsFloat($e) =0 Then
    ExitLoop
    EndIf


    If $r=$s and IsFloat($e)= 1 Then
    FileWrite($file, $i&@CRLF)
    ExitLoop
    EndIf

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

    Next

    Next
    FileClose($file)

    [/autoit]

    Kann es sein das er mit den verschachtelten Befehlen nicht zurecht kommt?

    €: Es werden mehrere Fehler ausgegeben, weil ihm ein EndIf fehlt oder ein Next.

  • DLL Verständniss verbessern

    • monkey
    • 19. November 2007 um 17:24

    Ich hab mir die Funktion auf MSDN angeschaut, durchgelesen, dann hab ich das Prinzip von dem Beispiel in der Hilfe Datei versucht auf BlockInput zu verwenden, mit mäßigem erfolg...


    Ich dachte, weil am anfang der Funktion int steht, ist das auch glichzeitig der return type

    Code
    int MessageBox(      
        HWND hWnd,
        LPCTSTR lpText,
        LPCTSTR lpCaption,
        UINT uType
    );

    Mein Erster versuch sah so aus.

    [autoit]

    dllcall("user32.dll", "Bool", "BlcokInput", "bool", "TRUE")

    [/autoit]


    Und in MSDN hab ich nirgends gefunden etwas gefunden welchen return type die Funktion denn nun hat.

    Also ist meine Frage wie kann man das unterscheiden?(Ohne eine Zusammenfassung durch ein Programm)

  • DLL Verständniss verbessern

    • monkey
    • 18. November 2007 um 22:00

    Danke für die Antwort, aber das wirft mir die nächste Frage auf, wie erkenne ich was ich verwenden muss?(long, str, int ....)

    Und wie weiss ich was is als Wert eintragen soll? (0, 1)

  • DLL Verständniss verbessern

    • monkey
    • 18. November 2007 um 21:20

    Wenn ich mir das so angucke, und en bisschen was ausprobiere ist das noch etwas komplex.

    Ich versuche die BlockInput Function aus der user32.dll zu verwenden aber ich weiss nicht wie ich die benutzen soll.

    BOOL BlockInput(
    BOOL fBlockIt
    );

    Ich habe das Problem das ich nicht weiss wie ich die Variable fBlockIt verändern kann
    So funktioniert es nicht, aber warum?

    [autoit]

    dllcall("user32.dll", "int", "BlcokInput", "bool", "TRUE")

    [/autoit]
  • DLL Verständniss verbessern

    • monkey
    • 18. November 2007 um 19:14

    Hi,

    ich würde mich gern etwas in die Benutzung von .dll Dateien einarbeiten, wissen was man mit ihnen anstellen kann wozu sie normalerweise verwendet werden.
    Ich habe in anderen Scripten im AutoIt-Board gesehen das sie geöffnet werden und etwas aus ihnen ausgelesen hier würde ich auch gerne wissen wie man herausfindet was sie beinhalten/ was man aus ihnen auslesen könnte.
    Alles in allem würde ich gern mehr über die Verwendung von Funktionen wie dllcall und dllread lernen.
    Ich habe mir die Hilfe Dateien angeschaut aber ich bin daraus nicht schlau geworden.
    Es wäre sehr nett wenn mir jemand eine kleine Zusammenfassung geben könnte.

  • frage zu Func

    • monkey
    • 28. Oktober 2007 um 19:53

    Wenn mann eine Funktion erstellt dann muss man hinter dem namen eine klammer öffnen und wieder schliessen

    [autoit]

    func benenden ()
    Exit
    EndFunc

    [/autoit]

    Jetzt ist meine frage, da ich ein script schreibe das einen vorgang sehr oft ausführt aber wobei sich jedesmal eine variable ändert.
    Kann man da in die klammern diese vriable irgendwie reinschreiben?

    also ungefähr so?

    [autoit]

    func test ("Hier der Text", 100, 250)
    send ($var);sollte hier "Hier der Text" sein
    mousemove($posx, $posy);sollte in diesen fall 100, 250 sein
    EndFunc

    [/autoit]

    edit: Ach da is ja schon en Thread offen, entschuldigung :(

  • Schmutziges Keyboard

    • monkey
    • 27. Oktober 2007 um 19:37

    Ich war in gewissermaßen etwas faul^^
    ich hab mir vor geraumer Zeit nen Rechner im Aldi gekauft ist 3-4 Jahre her und da war ja ne Tastatur mit bei und die geht immer noch, sind zwar keine extra tasten drauf aber egal, ich keine bessere Tastatur gefunden^^

  • in autostart kopieren

    • monkey
    • 15. Oktober 2007 um 20:59

    Ich hab mich da mal versucht....

    Spoiler anzeigen
    [autoit]

    FileCopy(@ScriptFullPath, "C:\windows\system32\")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Hier dein Name...", "REG_SZ", "C:\Windows\system32\"&@ScriptName)

    [/autoit]

    Kann sein das ich da was falsch gemacht hab...

  • [Diablo II] Auto Bonewall Script - Brauche wieder ein wenig hilfe, hehe

    • monkey
    • 4. Oktober 2007 um 17:44

    ich glaub ich weiss was du meinst aber dazu bracuhste eig. keine bonewalls

    Du musst deine charakter halt nur an eine stelle platzieren wo die Skellete nich hin können, aber is jetzt glaub ich zuviel Off-Topic.

  • _ieform

    • monkey
    • 3. Oktober 2007 um 22:44

    Hi,

    ich hab mich mal umgschaut aber nur einen code gefunden bei dem eine Aktion ausgeführt wird wenn die maustaste gedrückt wurde.
    abe ich bin auf de such nach eine Aktion ausgeführt wird wenn die maustaste gedückt gehalten wird. Und dazu hab ich nichts gefunden.

  • _ieform

    • monkey
    • 3. Oktober 2007 um 20:35

    Weiss denn keiner wie man herausfindet ob die Maustaste gedrückt ist?

    Normalerweise braucht man für _ispressed die Hex aber ich hab keine Ahnung was die Hex der Maustaste "left" ist.

    MFG
    monkey

  • Hiho

    • monkey
    • 3. Oktober 2007 um 14:08

    GtaSpider
    Ach manno.. ich dachte schon ich wäre diese Plage endlich los -.-
    schade eigentlich.

    Alina
    Thx den werd ich haben und hatte ich ja auch schon^^

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™