Versuchs doch einfach mal so:
[autoit]While ProcessExists('firefox.exe')
Sleep(1)
WEnd
Run('C:\Program Files\CCleaner\ccleaner.exe /AUTO')
[/autoit]
MfG, James C.
Versuchs doch einfach mal so:
[autoit]While ProcessExists('firefox.exe')
Sleep(1)
WEnd
Run('C:\Program Files\CCleaner\ccleaner.exe /AUTO')
[/autoit]
MfG, James C.
Freut mich, wenn du eine Lösung gefunden hast.
Meine Idee wäre gewesen, anhand der Log-Datei mit SRE eine Whitelist zu erstellen, und dann alle Dateien, die nicht in der Whitelist stehen, zu löschen.
MfG, James
Versuchs mal hiermit:
[autoit]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:
[autoit]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.
Schau dir mal dieses Script an: http://www.autoitscript.com/forum/topic/13…to-wave-or-mp3/
Stimmt, aber für Linux würde ich dann doch eher auf C umsteigen.
Dann nutzt doch direkt das Samba-logfile dafür. Dort sollten eigentlich die Namen sowie die Dateien auf die zugegriffen wurde stehen.
Und diese könnte man dann automatisch jede Woche/jeden Tag mit AutoIt auslesen und verarbeiten.
Verbessert mich bitte, falls ich mich irre, aber soweit ich richtig gelesen habe ist hier von einem Linux-Server die Rede.
AutoIt läuft aber ausschließlich auf Windows.
MfG, James
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:
[autoit]$rev = ""
[/autoit][autoit][/autoit][autoit]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.
Ich würde es so machen:
[autoit]$Timer = TimerInit()
[/autoit][autoit][/autoit][autoit]Do
If TimerDiff($Timer) > 400 Then
Funktion1()
$Timer = 0
ExitLoop
EndIf
Until @error
Func Funktion1()
;...
EndIf
Ein Freund von mir hat genau für diesen Zweck ein Skript geschrieben:
http://www.autoitscript.com/forum/topic/13…ket-forwarding/
EDIT #1:
Hat das schon irgendwer ausprobiert?
Wie wärs, wenn du eine HTML Datei bastelst, die mit AJAX ständig überprüft, ob neue Nachrichten verfügbar sind und diese dann anzeigt.
Diese Datei schickst du dann mit AutoIt an den Client (den Browser).
Unter "Project" steht "Build DLL and Setup Package".
Da einfach draufklicken, wenns fertig ist installieren und es müsste laufen.
@James1337
Ich merke dass mein Beispiel etwas unverständlich ausgedrückt ist.
Alles anzeigenA = Y
B = P
C = L
D = T
E = A
F = V
G = K
H = R
I = E
J = Z
K = G
L = M
M = S
N = H
O = U
P = B
Q = X
R = N
S = C
T = D
U = I
V = J
W = F
X = Q
Y = O
Z = W
Ok, danke.
Dann ist meine Idee viel zu umständlich.
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
Bei MD5 geht es leider darum, die Daten als ganzes zu hashen.
Du könntest deine Datei natürlich splitten, aber das Ergebnis hat dann nichts mehr mit MD5 zu tun.
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.
Ich würde in dem Script von funkey die Zeile 25 durch folgendes ersetzen:
[autoit]GUICtrlSetData($nEdit, $line & @CRLF, 'append')
[/autoit]
Dadurch macht man zwar selbst eine neue Zeile, aber wenn es nicht anders geht...