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

Beiträge von Tyzer

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 28. März 2019 um 11:52

    Perfekt alles läuft nun, danke dir :)

    Jetzt bleibt nur noch zu hoffen das die Verschlüsselung auch wirklich bei allen funktioniert

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 28. März 2019 um 01:19

    PHP:

    PHP
    <?php
    if (!function_exists('hex2bin')) {
        function hex2bin($d) {
            return pack("H*" , $d);
        }
    }
    // PHP mit PKCS#5 Style Padding :
    // (PKCS#5 : Daten mit AES zu verschlüsseln, die Multi-Byte Blockgröße besitzen)
    function pkcs5_Pad($unpaddedString, $blockSize=16) {
        $additionalChars = $blockSize - (strlen($unpaddedString) % $blockSize);
        return $unpaddedString.str_repeat(chr($additionalChars), $additionalChars);
    }
    function pkcs5_Unpad($paddedString) {
        $additionalChars = ord(substr($paddedString, -1, 1));
        return substr($paddedString, 0, -$additionalChars);
    }
    function AESEncrypt($tString, $tKey) {
        $iv        = '9324463837711294'; // IV wird hier manuell gesetzt
        $encrypttext = bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $tKey, pkcs5_Pad($tString), MCRYPT_MODE_CBC, $iv));
        return $encrypttext;
    }
    function AESDecrypt($tString, $tKey) {
        $iv        = '9324463837711294'; // IV wird hier manuell gesetzt
        $cleartext2 = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $tKey, hex2bin($tString), MCRYPT_MODE_CBC, $iv);
        return $cleartext2;
    }
    
    $Decr = AESDecrypt("8a43daefb0a2ec446a92044a7c52434e", "155373196869-8375-8479-8045-5576");
    echo '<p>' . utf8_encode($Decr) . '</p>';  // nur zur Anzeige
    ?>
    Alles anzeigen

    gibt das hier aus

    Code
    <p>Some text
    
    1234</p>

    das ist korrekt, ausser der letzte character vor dem </p>

    EDIT: Dieser ungültige character wird hier auf autoit.de nicht angezeigt

    AutoIt:

    Code
    #include <Crypt.au3>
    
    
    $Decr = _AESDecrypt("8a43daefb0a2ec446a92044a7c52434e","155373196869-8375-8479-8045-5576")
    ConsoleWrite($Decr & @CRLF)
    
    Func _AESDecrypt($tString, $tKey)
        Local $IV   = "9324463837711294"
        _Crypt_Startup()
        $tKey = _CryptImportKey($CALG_AES_256, $tKey, 32)
        Const $KP_IV = 1
        _CryptSetKeyParam($tKey, $KP_IV, $IV, 0, "str")
        $Decrypt = BinaryToString(_Crypt_DecryptData(Binary($tString), $tKey, $CALG_USERKEY))
        _Crypt_DestroyKey($tKey)
        _Crypt_Shutdown()
        Return $Decrypt
    EndFunc
    Func _AESEncrypt($tString, $tKey)
        Local $IV   = "9324463837711294"
        _Crypt_Startup()
        $tKey = _CryptImportKey($CALG_AES_256, $tKey, 32)
        Const $KP_IV = 1
        _CryptSetKeyParam($tKey, $KP_IV, $IV, 0, "str")
        $Encrypt = _Crypt_EncryptData($tString, $tKey, $CALG_USERKEY)
        _Crypt_DestroyKey($tKey)
        _Crypt_Shutdown()
        Return $Encrypt
    EndFunc
    Func _CryptImportKey($CALG, $bKey, $iKeyLength = -1)
        If $iKeyLength < 1 Then $iKeyLength = BinaryLen($bKey)
        Local $blob = DllStructCreate("align 1;BYTE bType;BYTE bVersion;WORD reserved;dword aiKeyAlg;dword keysize;byte key[" & $iKeyLength & "]")
        DllStructSetData($blob, 1, 0x8)
        DllStructSetData($blob, 2, 2)
        DllStructSetData($blob, 4, $CALG)
        DllStructSetData($blob, 5, $iKeyLength)
        DllStructSetData($blob, 6, Binary($bKey))
        Local $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptImportKey", "handle", __Crypt_Context(), "ptr", DllStructGetPtr($blob), "dword", DllStructGetSize($blob), "ptr", 0, "dword", 0, "ptr*", 0)
        If @error Then Return SetError(2, @error, 0)
        Return SetError(Not $aRet[0], 0, $aRet[6])
    EndFunc
    Func _CryptSetKeyParam($hKey, $iParam, $vValue, $iFlags=0, $sValType=Default)
        If Not $sValType Or $sValType = Default Then $sValType = "ptr"
        Local $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptSetKeyParam", "handle", $hKey, "uint", $iParam, $sValType, $vValue, "dword", $iFlags)
        If @error Then Return SetError(2, @error, 0)
        Return SetError(Not $aRet[0], 0, $aRet[0])
    EndFunc
    Alles anzeigen

    Das gibt mir dann allerdings nur

    Code
    ÿÿÿÿ
  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 28. März 2019 um 00:11

    Also mit AutoIt verschlüsseln dann zur .php senden dort entschlüsseln funktioniert, anders rum aber leider nicht.


    Mit PHP den in PHP verschlüsselten String zu entschlüsseln funktioniert, den gleichen String mit dem gleichen Password in AutoIt zu entschlüsseln gibt allerdings nichts richtiges zurück :(

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 27. März 2019 um 23:04

    Oh man wie konnte ich das nur übersehen, vielen dank nochmal :)

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 27. März 2019 um 22:33

    Dein code funktioniert soweit, jetzt wollte ich das in eine easy to use funktion packen, bei AutoIt kenn ich mich gut aus da ging das ohne Probleme, aber bei PHP bin ich noch nicht ganz so erfahren

    AutoIt:

    Code
    #include <Crypt.au3>
    Global $key  = "SomePassword"; // 32 byte key --> AES-256
    
    $Encr = _AESEncrypt("test1234",$key)
    ConsoleWrite($Encr & @CRLF)
    $Decr = _AESDecrypt($Encr,$key)
    ConsoleWrite($Decr & @CRLF)
    
    
    Func _AESDecrypt($tString, $tKey)
        Local $IV   = "9324463837711294"
        _Crypt_Startup()
        $tKey = _CryptImportKey($CALG_AES_256, $tKey, 32)
        Const $KP_IV = 1
        _CryptSetKeyParam($tKey, $KP_IV, $IV, 0, "str")
        $Decrypt = BinaryToString(_Crypt_DecryptData(Binary($tString), $tKey, $CALG_USERKEY))
        _Crypt_DestroyKey($tKey)
        _Crypt_Shutdown()
    
        Return $Decrypt
    EndFunc
    
    Func _AESEncrypt($tString, $tKey)
        Local $IV   = "9324463837711294"
        _Crypt_Startup()
        $tKey = _CryptImportKey($CALG_AES_256, $tKey, 32)
        Const $KP_IV = 1
        _CryptSetKeyParam($tKey, $KP_IV, $IV, 0, "str")
        $Encrypt = _Crypt_EncryptData($tString, $tKey, $CALG_USERKEY)
        _Crypt_DestroyKey($tKey)
        _Crypt_Shutdown()
    
        Return $Encrypt
    EndFunc
    
    Func _CryptImportKey($CALG, $bKey, $iKeyLength = -1)
        If $iKeyLength < 1 Then $iKeyLength = BinaryLen($bKey)
        Local $blob = DllStructCreate("align 1;BYTE bType;BYTE bVersion;WORD reserved;dword aiKeyAlg;dword keysize;byte key[" & $iKeyLength & "]")
        DllStructSetData($blob, 1, 0x8)
        DllStructSetData($blob, 2, 2)
        DllStructSetData($blob, 4, $CALG)
        DllStructSetData($blob, 5, $iKeyLength)
        DllStructSetData($blob, 6, Binary($bKey))
        Local $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptImportKey", "handle", __Crypt_Context(), "ptr", DllStructGetPtr($blob), "dword", DllStructGetSize($blob), "ptr", 0, "dword", 0, "ptr*", 0)
        If @error Then Return SetError(2, @error, 0)
        Return SetError(Not $aRet[0], 0, $aRet[6])
    EndFunc
    
    Func _CryptSetKeyParam($hKey, $iParam, $vValue, $iFlags=0, $sValType=Default)
        If Not $sValType Or $sValType = Default Then $sValType = "ptr"
        Local $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptSetKeyParam", "handle", $hKey, "uint", $iParam, $sValType, $vValue, "dword", $iFlags)
        If @error Then Return SetError(2, @error, 0)
        Return SetError(Not $aRet[0], 0, $aRet[0])
    EndFunc
    Alles anzeigen

    PHP Code:

    PHP
    <?php
    if (!function_exists('hex2bin')) {
        function hex2bin($d) {
            return pack("H*" , $d);
        }
    }
    // PHP mit PKCS#5 Style Padding :
    // (PKCS#5 : Daten mit AES zu verschlüsseln, die Multi-Byte Blockgröße besitzen)
    function pkcs5_Pad($unpaddedString, $blockSize=16) {
        $additionalChars = $blockSize - (strlen($unpaddedString) % $blockSize);
        return $unpaddedString.str_repeat(chr($additionalChars), $additionalChars);
    }
    function pkcs5_Unpad($paddedString) {
        $additionalChars = ord(substr($paddedString, -1, 1));
        return substr($paddedString, 0, -$additionalChars);
    }
    
    
    function AESEncrypt($tString, $tKey) {
        $iv        = '9324463837711294'; // IV wird hier manuell gesetzt
        $encrypttext = bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $tKey, pkcs5_Pad($tString), MCRYPT_MODE_CBC, $iv));
        return $encrypttext;
    }
    
    
    function AESDecrypt($tString, $tKey) {
        $iv        = '9324463837711294'; // IV wird hier manuell gesetzt
        $cleartext2 = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $tKey, hex2bin($tString), MCRYPT_MODE_CBC, $iv);
        return $cleartext2;
    }
    
    
    $Encr = AESEncrypt("test1234","SomePassword");
    echo '<p>' . utf8_encode($Encr) . '</p>';  // nur zur Anzeige
    $Decr = AESEncrypt($Encr,"SomePassword");
    echo '<p>' . utf8_encode($Decr) . '</p>';  // nur zur Anzeige
    
    ?>
    Alles anzeigen

    Die PHP gibt mir allerdings immer nur das zurück

    <p></p><p></p>
  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 27. März 2019 um 21:45

    Perfekt ich versuchs gleich mal aus, vielen vielen dank :)

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 27. März 2019 um 20:31

    Ja beides muss gehen, ein Text wird verschlüsselt von AutoIt und an die .php gesendet diese entschlüsselt den Text, verarbeitet diesen und gibt einen verschlüsselten Text aus den man mit AutoIt wieder entschlüsselt

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 27. März 2019 um 20:12

    Ich weis allerdings fehlt mir da eine gescheite Verschlüsselungs / Entschlüsselungs Funktion die mit AutoIt <-> PHP funktioniert.

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 27. März 2019 um 20:02

    Ja Crypt hab ich schon damals immer benutzt das Problem ist allerdings das ich den verschlüsselten Text davon nicht in PHP entschlüsseln kann, da fehlt mir einfach die Funktion für.

    Ich möchte das ganze schon verschlüsselt übertragen gibt ja genug Programme mit den man den Traffic mitlesen kann, da soll er nicht auch noch lesbar sein.

  • Problem mit RC4 verschlüsselung

    • Tyzer
    • 27. März 2019 um 19:41

    Ich habe ein Script das mit einem .php Script kommuniziert

    Der AutoIt Code zum verschlüsseln in RC4 sieht so aus

    Code
    Func rc4($sKey, $sStr)
        Local $s[256], $j = 0, $x, $res, $y, $i
        Local $uBound
        For $i = 0 To 255
            $s[$i] = $i
        Next
        For $i = 0 To 255
            $j = Mod(($j + $s[$i] + Asc(StringMid($sKey, Mod($i, StringLen($sKey))+1, 1))), 256)
            $x = $s[$i]
            $s[$i] = $s[$j]
            $s[$j] = $x
        Next
        $i = 0
        $j = 0
        For $y = 0 To StringLen($sStr)-1
            $i = Mod(($i + 1), 256)
            $j = Mod(($j + $s[$i]), 256)
            $x = $s[$i]
            $s[$i] = $s[$j]
            $s[$j] = $x
            $res &= Chr(BitXOR(Asc(StringMid($sStr, $y+1, 1)), ($s[Mod(($s[$i] + $s[$j]), 256)])))
        Next
        Return $res
    EndFunc
    Alles anzeigen

    Der PHP Code sieht so aus

    Code
    function rc4($key, $str) {
        $s = array();
        for ($i = 0; $i < 256; $i++) {
            $s[$i] = $i;
        }
        $j = 0;
        for ($i = 0; $i < 256; $i++) {
            $j = ($j + $s[$i] + ord($key[$i % strlen($key)])) % 256;
            $x = $s[$i];
            $s[$i] = $s[$j];
            $s[$j] = $x;
        }
        $i = 0;
        $j = 0;
        $res = '';
        for ($y = 0; $y < strlen($str); $y++) {
            $i = ($i + 1) % 256;
            $j = ($j + $s[$i]) % 256;
            $x = $s[$i];
            $s[$i] = $s[$j];
            $s[$j] = $x;
            $res .= $str[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]);
        }
        return $res;
    }
    Alles anzeigen

    Diese beiden funktionieren auch prima miteinander, zumindest für mich und viele andere, für manche user jedoch nicht, momentan hab ich den Verdacht das es irgendwas mit der OS Sprache zu tun hat denn diese haben ein Chinesisches OS

    z.B. sieht der verschlüsselte Code bei mir so aus

    Zitat


    0x67886FAA5051FDB8100A873B837D76C105E3F2F36F01C94520DEF841F63F3187B4BB5EC4C63CB4D69216BCAC03CF8E684F9C542FCBE42BE50E1051F2

    Bei einem Chinesischem OS sieht der selbe Text encrypted allerdings so aus

    Zitat

    0x673F6F3F50513F3F100A3F3B3F7D763F053F3F3F6F013F45203F3F413F3F313F3F3F5E3F3F3C3F3F3F163F3F033F3F684F3F542F3F3F2B3F0E10513F

    (Die verschlüsselten Texte wurden mit StringToBinary umgewandelt)

    habt ihr eine Idee warum es bei manchen einfach nicht funktionieren will oder kennt ihr eine bessere encrypt Funktion die bei AutoIt <--> PHP gut funktioniert?

  • Run Subprozess ohne admin rechte

    • Tyzer
    • 28. Juni 2018 um 17:48

    Mein Script läuft mit und braucht #RequireAdmin, nun will ich ein Program ausführen mit dem Script aber alle Prozesse die von dem Script gestartet werden erhalten automatisch auch Adminrechte, weis jemand ein Umweg?

    Edit: nevermind, scheint ich habs schon gefunden https://www.autoitscript.com/forum/topic/12…ucedprivileges/

  • USB Fan per script aus-an schalten

    • Tyzer
    • 13. Juni 2018 um 01:24

    Soweit ich weis ist es unmöglich bei den meisten USB Ports den Strom auszustellen aber ihr wisst da sicher mehr, ich würde mit einem Script gerne einen USB Fan aus-an schalten können

  • Kamera winkel ausrechnen im 3D Raum

    • Tyzer
    • 12. November 2017 um 19:20
    Zitat von AspirinJunkie

    Naja +90 ist schon ok. Aber dann folgt noch eine Bereichsabfrage, damit man die daraus entstehenden Fälle über 180° korrekt behandelt.

    Da es aber 90°-Differenzen zum normalen Arkustangens sind, kann man alternativ auch durch entsprechendes umstellen der Parameter von atan2 eine Drehum um 90° erreichen.

    Entspricht dies dem was du erreichen möchtest?:

    AutoIt
    If Not IsDeclared("PI") Then Global Const $PI = ACos(-1)
    Global Const $rad2deg = 180.0 / $PI
    Global Const $deg2rad = $PI / 180.0
    
    ; Koordinaten
    Global $pt_A = [0, 0, 0] ; Kamerakoordinaten [X,Y,Z]
    Global $pt_B = [5, 5, 5] ; Punktkoordinaten [X,Y,Z]
    
    Global $f_Yaw = _calcYaw($pt_A, $pt_B)
    Global $f_Pitch = _calcPitch($pt_A, $pt_B)
    
    ConsoleWrite(StringFormat("% 10s: % 7.2f°\n% 10s: % 7.2f°\n", "Yaw", $f_Yaw * $rad2deg, "Pitch", $f_Pitch * $rad2deg))
    
    #Region Funktionen
    Func _calcYaw($pt_From, $pt_To)
        Return atan2($pt_To[0] - $pt_From[0], -($pt_To[1] - $pt_From[1]))
    EndFunc   ;==>_calcYaw
    
    Func _calcPitch($pt_From, $pt_To)
        Local $f_R2D = Sqrt(($pt_To[0] - $pt_From[0])^2 + ($pt_To[1] - $pt_From[1])^2) ; der Abstand auf der X-Y-Ebene
        Return -atan2($pt_To[2] - $pt_From[2], $f_R2D)
    EndFunc   ;==>_calcPitch
    
    Func atan2($y, $x)
        If $y = 0 And $x < 0 Then Return $PI
        Return (2 * ATan($y / ($x + Sqrt($x * $x + $y * $y))))
    EndFunc   ;==>atan2
    #EndRegion Funktionen
    Alles anzeigen

    Wow vielen vielen Dank :)

    Funktioniert einwandfrei :)

  • Kamera winkel ausrechnen im 3D Raum

    • Tyzer
    • 12. November 2017 um 00:10
    Zitat von Musashi

    Keine Lösung für dein Problem, aber ein kleiner Hinweis zur verwendeten Syntax :

    Innerhalb der Funktion _NullifyCoord deklarierst Du globale Variablen. Das ist etwas, dass man grundsätzlich vermeiden sollte, auch wenn es die Lauffähigkeit des Skriptes nicht notwendigerweise einschränkt.

    Du kannst ja spaßeshalber mal folgendes Testskript ausführen :

    AutoIt
    ; Test für globale Deklaration von Variablen in Funktionen :
    
    Global $sGlobalStr = 'Global deklarierter String'
    
    _DeclareGlobalInFunc()
    
    ConsoleWrite('@@ MAIN : ---------- Ausgabe im Hauptteil des Skriptes : ' & @CRLF)
    ConsoleWrite('@@ MAIN : GlobalStr      = ' & $sGlobalStr & @CRLF)
    ; Dieser Aufruf erzeugt den Warnhinweis :
    ; warning: $sLocalGlobalStr: possibly used before declaration.
    ConsoleWrite('@@ MAIN : LocalGlobalStr = ' & $sLocalGlobalStr & @CRLF & @CRLF)
    
    Func _DeclareGlobalInFunc()
        Local $sLocalStr = 'In Funktion mit Local deklarierter String'
        Global $sLocalGlobalStr = 'In Funktion mit Global deklarierter String'
    
        ConsoleWrite('@@ FUNC: ---------- Ausgabe in Funktion _DeclareGlobalInFunc : ' & @CRLF)
        ConsoleWrite('@@ FUNC: LocalStr       = ' & $sLocalStr & @CRLF)
        ConsoleWrite('@@ FUNC: LocalGlobalStr = ' & $sLocalGlobalStr & @CRLF & @CRLF)
    EndFunc ;==>_DeclareGlobalInFunc
    Alles anzeigen

    Dieser Warnhinweis läßt sich, soweit ich weiß, zwar abschalten, trotzdem ist diese Vorgehensweise nicht empfehlenswert.

    Solltest Du allerdings mit dem Skript von AspirinJunkie weitermachen, dann ist dieser Punkt bereits erledigt.

    Gruß Musashi

    Alles anzeigen

    Danke danke ich weis das ganze war sehr unordentlich geschrieben, in meinen richtigen Programmen mach ich das normal auch nicht ganz so :p nur bei Testscripts wo man schnell mal was ändert und rumexperimentiert bis man es zum laufen bekommt kann das schnell unordentlich aussehen :D

  • Kamera winkel ausrechnen im 3D Raum

    • Tyzer
    • 12. November 2017 um 00:07
    Zitat von AspirinJunkie

    Um die Frage abschließend zu klären fehlen ein paar wichtige Infos.

    Vor allem wie denn deine eingezeichneten Winkelangaben im Koordinatensystem liegen.

    Sprich: In welche Richtung zeigt denn die X bzw. Y-Achse?

    Ansonsten sagst du dass du falsche Ergebnisse erhälst.

    Was ist konkret falsch daran?

    Was wären denn die richtigen Ergebnisse?

    Mit den bisherigen Angaben und ein paar notwendigen Annahmen meinerseits hätte ich so angefangen:

    AutoIt
    If Not IsDeclared("PI") Then Global Const $PI = ACos(-1)
    Global Const $rad2deg = 180.0 / $PI
    Global Const $deg2rad = $PI / 180.0
    
    ; Koordinaten
    Global $pt_A = [0, 0, 0] ; Kamerakoordinaten [X,Y,Z]
    Global $pt_B = [5, 5, 5] ; Punktkoordinaten [X,Y,Z]
    
    Global $f_Yaw = _calcYaw($pt_A, $pt_B)
    Global $f_Pitch = _calcPitch($pt_A, $pt_B)
    
    ConsoleWrite(StringFormat("Yaw: % 6.2f°\nPitch: % 6.2f°\n", $f_Yaw * $rad2deg, $f_Pitch * $rad2deg))
    
    
    #Region Funktionen
    Func _calcYaw($pt_From, $pt_To)
        Local $Yaw = atan2($pt_To[1] - $pt_From[1], $pt_To[0] - $pt_From[0])
        Return $Yaw
    EndFunc   ;==>_calcYaw
    
    Func _calcPitch($pt_From, $pt_To)
        Local $f_R2D = Sqrt(($pt_To[0] - $pt_From[0])^2 + ($pt_To[1] - $pt_From[1])^2) ; der Abstand auf der X-Y-Ebene
        Local $Yaw = atan2($pt_To[2] - $pt_From[2], $f_R2D)
        Return $Yaw
    EndFunc   ;==>_calcPitch
    
    Func atan2($y, $x)
        Return (2 * ATan($y / ($x + Sqrt($x * $x + $y * $y))))
    EndFunc   ;==>atan2
    #EndRegion Funktionen
    Alles anzeigen
    Alles anzeigen

    Wow der Code funktioniert schon wunderbar, das Ergebnis ist nahezu komplett richtig

    Bei den Coordinaten die du verwendet hast kommt das raus

    Yaw: 45°

    Pitch: 35.26°

    richtig halber müsste es aber so sein

    Yaw: 135°

    Pitch: -35.26°

    bei Pitch müsste ich das ganze also einfach *(-1) rechnen aber bei Yaw bin ich mir nicht so sicher, wenn ich immer +90 hinzufüge wirds wohl nicht ganz stimmen, ihr habt doch bestimmt ne bessere Lösung als +90 oder? :D

  • Kamera winkel ausrechnen im 3D Raum

    • Tyzer
    • 11. November 2017 um 11:41

    Ich hab jetzt schon stunden gegoogelt aber finde keine lösung das ganze in Autoit umzusetzen

    Ich habe 2 Punkte im 3D raum zum einen die Kamera zum anderen den punkt wo ich hinschauen möchte, nur bekomm ich immer falsche Ergebnisse raus

    Hier ein Bild zum verständnis was ich suche

    [Blockierte Grafik: https://image.ibb.co/icmVLw/camera.png]

    hier ist der Code den ich schon testweise habe

    Code
    Global $Distance2D = 0, $Distance3D = 0
    
    ConsoleWrite("Camera Yaw: " & _GetCamYaw(0,0,0,5,5,5) & @CRLF & "Camera Pitch: " & _GetCamPitch(0,0,0,5,5,5) & @CRLF & "Distance3D: " & $Distance3D & @CRLF)
    
    
    
    Func _NullifyCoord($_Own_X, $_Own_Y, $_Own_Z, $_T_X, $_T_Y, $_T_Z)
        Global $dx = $_T_X - $_Own_X
        Global $dy = $_T_Y - $_Own_Y
        Global $dz = $_T_Z - $_Own_Z
        Global $dx2 = $dx*$dx
        Global $dy2 = $dy*$dy
        Global $dz2 = $dz*$dz
        Global $Distance2D = Sqrt($dx2 + $dy2)
        Global $Distance3D = Sqrt($dx2 + $dy2 + $dz2)
    EndFunc
    
    Func _GetCamYaw($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
        _NullifyCoord($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
        Return atan2($dy,$dx)
    EndFunc
    
    Func _GetCamPitch($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
        _NullifyCoord($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
    
        $rotx = atan2($dy,$dx); <-- from some tests
        $roty = atan2($dx* Cos($rotx), $dz); <-- from some tests
        $rotz = atan2(Cos($rotx), Sin($rotx) * Sin($roty)); <-- from some tests
    
        Return atan2($dz,$Distance3D)
    EndFunc
    
    
    
    Func atan2($y, $x)
        Return (2 * ATan($y / ($x + Sqrt($x * $x + $y * $y))))
    EndFunc
    Alles anzeigen
  • SendMessage oder PostMessage linksklick ohne Winfokus zu verlieren

    • Tyzer
    • 16. Oktober 2015 um 08:32

    Hat sich erledigt, hab es mittlerweile hinbekommen trotzdem danke

  • SendMessage oder PostMessage linksklick ohne Winfokus zu verlieren

    • Tyzer
    • 16. Oktober 2015 um 06:46

    Wenn jemand eine Lösung findet wäre ich sogar bereit 10€ über Paypal zu bezahlen

  • SendMessage oder PostMessage linksklick ohne Winfokus zu verlieren

    • Tyzer
    • 16. Oktober 2015 um 00:19

    Nein es handelt sich nicht um das selbe Programm und bei Controlclick bekommt man auch den Fensterfokus genauso wie bei SendMessage und PostMessage

  • SendMessage oder PostMessage linksklick ohne Winfokus zu verlieren

    • Tyzer
    • 15. Oktober 2015 um 23:30

    Wenn ich mit SendMessage oder PostMessage einen Linksklick auf ein anderes Fenster mache funktioniert das auch alles wunderbar nur denkt sich Windows wohl automatisch das dieses Fenster fokusiert werden soll, kann man das umgehen?

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™