Beiträge von James

    Versuchs doch einfach mal so:
    While ProcessExists('firefox.exe')
    Sleep(1)
    WEnd


    Run('C:\Program Files\CCleaner\ccleaner.exe /AUTO')

    MfG, James C.

    Versuchs mal hiermit:
    Func _MousePosCall($left, $top, $right, $bottom, $function)
    $mouse = MouseGetPos()
    If $mouse[0] >= $left And $mouse[0] <= $right And $mouse[1] >= $top And $mouse[1] <= $bottom Then
    Call($function)
    Return True
    EndIf
    Return False
    EndFunc


    Und hier noch ein Beispiel:
    While 1
    _MousePosCall(0, 0, 100, 100, 'test')
    WEnd


    Func test()
    Return MsgBox(64, 'Test', 'Test')
    EndFunc


    EDIT #1:
    Falls jemandem ein besserer Name einfällt, ich bin für alle Vorschläge offen.

    Nur mal so zur Info:
    Man muss die Daten nicht in Binär umwandeln (und auch nicht wieder zurück).
    man kann sie auch ganz normal senden, was vielleicht sogar besser ist.


    Das Script passt soweit, ich würde allerdings noch Error-Handling einbauen und im Empfänger-Script folgendes ändern:
    $rev = ""


    While True
    $rev &= TCPRecv($con,99999)
    If $rev="" Then ExitLoop
    WEnd

    Wenn du das so machst, dann hört die Schleife nie auf, auch wenn die Datei schon längst gesendet wurde.
    Am besten so:
    $rev = ""
    While True
    $t_rev = TCPRecv($con, 99999)
    If $t_rev = "" Then ExitLoop
    $rev &= $t_rev
    WEnd


    Ich denke ein Programm mit AutoIt zu schreiben, welches die aktuellen ausgehenden Verbindungen eines PCs analysiert und dann alles herausfiltert, was zu einem Browser gehören könnte ist mindestens so aufwändig zu schreiben.


    Das geht mir AutoIt leider garnicht, weil man das mit TCP-RAW-Verbindungen sehr leicht hinbekommen könnte, AutoIt diese aber leider nicht unterstützt.


    Mit RAW Verbindungen kann man sich in schon bestehende Verbindungen zwischen zwei Comutern (Server & Client; einer davon muss der eigene Computer sein) "einklinken" und die gesendeten Daten mitlesen und bearbeiten.

    In Final Fantasy gibt es eine Sprache die Al Bhed genannt wird, diese Sprache setzt sich jedoch nicht aus Worten zusammen, sondern lediglich aus anderen Buchstaben.


    Anhand deines Beispiels denke ich aber, dass die Sprache - wie jede andere auch - aus anderen Wörtern besteht.
    Ich würde ein kleines Übersetzungstool basteln, und den Text dann ins Spiel kopieren. z.B.:
    GUICreate('Deutsch -> Al Bhed', 400, 300)
    $gText = GUICtrlCreateEdit('Text', 20, 20, 360, 230)
    $gButton = GUICtrlCreateButton('Übersetzen', 20, 260, 160, 20)
    GUISetState(@SW_SHOW)


    Do
    $Msg = GUIGetMsg()
    If $Msg = $gButton Then
    $Text = GUICtrlRead($gText)
    $Text = StringReplace($Text, 'Hallo', 'Rymmu')
    ;...
    GUICtrlSetData($gText, $Text)
    EndIf
    Until $Msg = -3

    Ich hoffe, dass ich mich vorhin geirrt habe.
    Ich hab grad mal 20min versucht meine Idee umzusetzen, aber dabei ist nicht viel herausgekommen.
    Meine Idee ansich würde schon funktionieren, aber die Umsetzung in AutoIt ist nicht so leicht wie ich dachte.
    Das habe ich bis jetzt erreicht: (wenn jemand das Skript fertig stellen kann, poste ich die Binary-Funktionen aus der UDF.)


    #include-once
    #include <ChristophX86Binary.au3>


    Func _MD5_HashFile($File)
    If Not FileExists($File) Then
    SetError(1)
    Return ''
    EndIf
    $FileLen = FileGetSize($File)*8
    $PaddingBits = '1'
    If Mod($FileLen+StringLen($PaddingBits)+64, 512) <> 0 Then
    Do
    $PaddingBits &= '0'
    Until Mod($FileLen+StringLen($PaddingBits)+64, 512) = 0
    EndIf
    ConsoleWrite('Message Length after Padding: ' & $FileLen+StringLen($PaddingBits) & @CRLF)
    $BinaryLen = _DecimalToBinary($FileLen, 50, False, False)
    If StringLen($BinaryLen) > 64 Then
    $BinaryLen = StringRight($BinaryLen, 64)
    ElseIf StringLen($BinaryLen) < 64 Then
    Do
    $BinaryLen = '0' & $BinaryLen
    Until StringLen($BinaryLen) = 64
    EndIf
    ConsoleWrite('Original File Length: ' & StringLen($BinaryLen) & @CRLF)7
    $MessageLen = $FileLen+StringLen($BinaryLen)+StringLen($PaddingBits)
    ConsoleWrite('Message Length after appending Original Length: ' & $MessageLen & @CRLF)
    Local $A = 0x67452301
    Local $B = 0xefcdab89
    Local $C = 0x98badcfe
    Local $D = 0x10325476
    #cs
    This step uses a 64-element table T[1 ... 64] constructed from the
    sine function. Let T[i] denote the i-th element of the table, which
    is equal to the integer part of 4294967296 times abs(sin(i)), where i
    is in radians.
    #ce
    For $i = 0 To ($MessageLen/32)-1 Step 1
    $X = StringSplit(_StringToBinary(FileRead($File, 2)), '', 2)
    $AA = $A
    $BB = $B
    $CC = $C
    $DD = $D
    #cs
    /* Round 1. */
    /* Let [abcd k s i] denote the operation
    a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
    #ce
    $A = $B + BitShift(($A + F($B, $C, $D) + $X[?] + $T[$i]), -$s)
    #cs
    /* Do the following 16 operations. */
    [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
    [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
    [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
    [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
    #ce


    #cs
    /* Round 2. */
    /* Let [abcd k s i] denote the operation
    a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
    /* Do the following 16 operations. */
    [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
    [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
    [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
    [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
    #ce


    #cs
    /* Round 3. */
    /* Let [abcd k s t] denote the operation
    a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
    /* Do the following 16 operations. */
    [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
    [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
    [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
    [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
    #ce


    #cs
    /* Round 4. */
    /* Let [abcd k s t] denote the operation
    a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
    /* Do the following 16 operations. */
    [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
    [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
    [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
    [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
    #ce
    $A += $AA
    $B += $BB
    $C += $CC
    $D += $DD
    Next
    #cs
    The message digest produced as output is A, B, C, D. That is, we
    begin with the low-order byte of A, and end with the high-order byte
    of D.
    #ce
    EndFunc


    Func F($X, $Y, $Z)
    ; XY v not(X) Z
    If $X Then
    Return $Y
    Else
    Return $Z
    EndIf
    EndFunc


    Func G($X, $Y, $Z)
    ; XZ v Y not(Z)
    If $X Then
    If Not $Z Then
    Return $Y
    EndIf
    Return $Z
    EndIf
    EndFunc


    Func H($X, $Y, $Z)
    ; X xor Y xor Z
    Return Hex(BitXOR($X, $Y, $Z))
    EndFunc


    Func I($X, $Y, $Z)
    ; Y xor (X v not(Z))
    Return BitXOR($Y, $X, BitNOT($Z))
    EndFunc

    Also...
    1) Dein TCPConnect ist nicht nötig, da der Client sowieso zum Server connected (und nicht umgekehrt).
    Da bei dem Client kein Server läuft, müsste das sowieso schief gehen.
    2) Hier mal mein Vorschlag:
    TCPStartup()
    $Server = TCPListen($IPAddr, $Port)
    ;...
    $Client = -1


    While 1
    If $Client > 0 Then
    $Recv = TCPRecv($Client, 4096)
    If $Recv = '#####' Then
    TCPSend($Client, GUICtrlRead($Edit1))
    Else
    GUICtrlSetData($Edit1, $Recv & @CRLF, 'append')
    EndIf
    Else
    $Client = TCPAccept($Server)
    EndIf
    ;...
    WEnd
    TCPCloseSocket($Client)
    TCPCloseSocket($Server)
    TCPShutdown()
    So wird das, was der Client schickt, zu dem Edit-Control hinzugefügt, und wenn der Client '#####' schickt, wird der Inhalt von dem Edit-Control zurückgeschickt.
    Ich hoffe das war hilfreich.