Das ist jetzt nicht dein Ernst oder? Ich finde es ja schon länger ziemlich ****, dass einige User meinen sie müssten alle ihre Threads immer in 'beiden' Foren posten zu müssen. Aber das finde ich persönlich jetzt schon ziemlich daneben. In eben diesem bestimmten Anderen Forum hast du eben mal erst nach 20 Minuten eine Antwort bekommen und deshalb wird dann sofort in diesem Forum der Nächste Thread aufgemacht??? Also ich weis ja nicht welche Logik dahinter steckt, aber es kann doch wirklich nicht angehen, dass zu einem einzigen Vorhaben jetzt schon 3 Threads existieren!
Sorry aber DAS musste jetzt mal raus...
Beiträge von BinDannMalWeg
-
-
Die Variable $Pid trägt in diesem Fall einen irreführenden Namen, da die Funktion RunAsWait() nicht die PID sondern den Exitcode des gestarteten Programms zurück gibt... (Kleiner Tipp: genau diese Dinge stehen in der doch sehr sehr sehr ausführlichen Hilfe/Dokumentation von Autoit)
-
Warum eigentlich nicht einfach so?
Spoiler anzeigen
[autoit]Global $Online = False, $IP = '127.0.0.1', $Intervall = 30, $Log_Path = @ScriptDir&'\'&$IP&'.txt'
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$Timer = TimerInit()
$Ping = Ping($IP)
If $Ping > 0 Then
If $Online = False Then
$Online = True
FileWrite($Log_Path,'[ '&@MDAY&'/'&@MON&'/'&@YEAR&' | '&@HOUR&':'&@MIN&':'&@SEC&' ]'&$IP&' is online now!'&@CRLF)
TrayTip('',$IP&' is online now!',10,1)
EndIf
Else
If $Online = True Then
$Online = False
FileWrite($Log_Path,'[ '&@MDAY&'/'&@MON&'/'&@YEAR&' | '&@HOUR&':'&@MIN&':'&@SEC&' ]'&$IP&' is offline now!'&@CRLF)
TrayTip('',$IP&' is offline now!',10,2)
EndIf
EndIf
Do
Sleep(1000)
Until TimerDiff($Timer) >= ($Intervall*1000)
WEnd -
Wie wäre es wenn du dich erst einmal mit den Anfänger-Tutorials oder Pee's Autoit-Buch beschäftigen würdest?! Denn wenn du die Grundlagen beherrschen würdest, wäre dir auch klar, dass RunAs() ein eigenständiger Befehl ist und auch, dass du nur die benötigten Parameter in der Hilfe nachschlagen müsstest...
-
OMG weist du was Rekursion ist?
[autoit]
Ändere einfach die Funktion _Hotkey so ab und lass alles andere so wie es vorher war...Func _HotKey()
[/autoit]
HotKeySet(@HotKeyPressed)
Send(@HotKeyPressed)
ConsoleWrite("Pressed: " & @HotKeyPressed & @CRLF)
HotKeySet(@HotKeyPressed,'_Hotkey')
test()
EndFunc -
@lalaladen: Das liegt daran, dass am Anfang von chesstigers Funktion der Hotkey deaktiviert wird. Da er am Ende der Funktion nicht neu erstellt wird kannst du logischer weise nicht 2 mal auf 'a' reagieren....
-
Wenn du uns dein Problem nicht genau schilderst können wir dir auch nicht helfen...
-
Zitat
Gibt's eh schon wie Sand am Meer.
Sagte der Drogendealer zum Richter...
Naja aber jetzt ist es ja eh schon 'zu spät'
Ach ja und in deinem Scriptbeispiel ist ein Fehler im HotkeySet() in der ersten Schleife. -
Und wofür braucht man so etwas? Sorry aber bei derartigen Funktionen muss ich iwie immer an Keylogger denken...
-
Kannst du dein Problem genauer beschreiben? So ist es momentan nur schwer zu erkennen was genau du vorhast...
-
Hey Stevenx,
um zu Beginn erstmal etwas positives zu sagen: Ich finde es echt toll dass du überhaupt erstmal auf die Idee mit den T-Shirts gekommen bist. Auch die scheinbare Mühe die du dir damit gibst gefällt mir gut und tut wohl auch dem Forum gut.
ABER: Also wenn schon klauen dann wenigstens mit Copyright-Hinweis! Der Community 'dein' neu 'designtes', naja sagen wir lieber kopiertes, T-Shirt vorzustellen und auch wirklich so zu tun, als ob DU hier der Designer wärst empfinde ich persönlich ziemlich (ich verkneife mir an dieser Stelle den Ausdruck...) ! Mal ehrlich einmal kurz Tineye angeworfen und jeder weis von wo 'dein' Design kommt... -
Daniel: Wieso? Er hat doch den kompletten Dateinamen angegeben? :o Solange die Datei im selben Verzeichnis liegt, funktioniert sein Script.
@Der Donn: Du solltest dir mal die Control-Befehle in der Hilfe anschauen. Mit ihnen ist es möglich das Fenster allein mit dem entsprechenden Handel anzusprechen und Buttons zu drücken usw... Daher entfällt auch das bei der Send-Methode nötige in den Vordergrund holen und es ist auch möglich das Fenster gleichzeitig zu verstecken. -
So wie ich das verstanden habe geht es darum, dass er ein GUI in einer rekursiven Funktion erstellt. Momentan wird eine GUIGetMsg()-Abfrage verwendet, was dazu führt, dass das GUI aus der 'ersten' Instanz der Funktion nicht mehr reagiert...
So c.unhund damit dieses Problem nicht mehr auftritt solltest du dich mal mit dem sogenannten GUIOnEventMode beschäftigen, zu welchem es hier im Forum auch schon einige Erklärungen/Tutorials gibt... Damit du diesen, wenn du ihn verstanden hast, auch in deiner rekursiven Funktion verwenden kannst, musst du in den durch die Events aufgerufenen Funktionen eine Abfrage für das GUI-Handle einbauen, damit du auch weist auf welcher GUI-Instanz der Button X gedrückt wurde.
-
Hey HalleMike,
mit meinem Beitrag wollte ich nicht respektlos oä. wirken! Aber mich dann sofort als arrogant abzustempeln finde ich auch nicht okay! Okay das wollte ich nur mal gesagt haben, aber jetzt wieder zum eigentlichen Thema: Deinem Script. Was die sicherheitstechnischen Bedenken von mir und einigen Anderen angeht bleibe ich bei meiner Meinung. Da du die in deinem Script verwirklichte Methode für sicherer empfindest, als eben die 'manuelle' Eingabe/die Verwendung eines Live-Systems, ist das ja okay. Aber auch wenn das Script später wahrscheinlich nur sehr wenige effektiv nutzen werden, hat es dir natürlich einiges gebracht denn es geht ja darum Übung im Umgang mit Autoit zu sammeln und die hast du bestimmt durch dieses Projekt bekommen... 150 Zeilen auch funktionierenden Code zu schreiben ist gerade für einen Anfänger eine ordentliche Leistung! Wenn ich an meine Anfänge denke.... Ohje Naja und um dein Script noch zu erweitern/verbessern könntest du dir als nächstes ja mal dem Thema Verschlüsselung widmen... -
Aha
...
Dann ist es also sicherer meine kompletten Bankdaten in einer unverschlüsselten Textdatei zu speichern???Okay jetzt mal im Ernst:
Wenn man sein System nicht 'sauber' halten kann oder auch wenn man 'etwas' zu viel Angst vor Übergriffen hat, dann schnappt man sich eben ne Linux-Live-CD und betreibt sein Onlinebanking ober diese... Aber ein Autoit-Script das die Daten unverschlüsselt in einer Textdatei ablegt und sie dann per copy und paste im IE?!!? einfügt... -
Meinst du das in etwa so:
Spoiler anzeigen
[autoit]Dim $CSVFile1 = @TempDir&'\test1.csv', $CSVFile2 = @TempDir&'\test2.csv', $Timer
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$Timer = TimerInit()
If FileExists($CSVFile1) Then
; Was auch immer du hier tun willst...
EndIf
If FileExists($CSVFile2) Then
; Was auch immer du hier tun willst...
EndIf
If TimerDiff($Timer) < (8*1000) Then Sleep(2000)
WEnd -
An einem WebCrawler hab ich mich auch schon mal versucht: Hab 3 mal alles hin geschmissen und nach nem halben Jahr wieder komplett neu angefangen... Naja was ich dir aber empfehlen würde ist folgendes: Benutz nicht den IE um einen WebCrawler zu schreiben! Benutz entweder INetGet() oder die WinHTTP-Funktionen... (Letztere währen wohl am sinnvollsten) Außerdem würde ich dir raten den Quellcode mit StringRegExp zu löchern. Und wenn du dann deinen WebCrawler vollendet hast wirst du feststellen, dass er vieeeeel zu langsam arbeiten wird... Das liegt dann aber nicht an dir, sondern an Autoit allgemein. Naja das war jetzt mal meine Meinung zu dem Thema wenn du das anders siehst, dann ignoriere meinen Post einfach...
-
Hey,
könntest du nochmal erklären was genau du tun willst, denn ich für meinen Teil weis nicht was der 'Export eines Reports' sein soll...
Lieg ich mit der Vermutung richtig, dass du in deinem Script warten willst bis von einem externen Programm eine bestimmte CSV-Datei im Temp-Verzeichnis erstellt wird, um sie dann auszulesen/verarbeiten oder irgendwo Anders hin zu kopieren...?! -
Was willst du denn noch?
Du schaust dir am besten die GUI-Funktionen an und erstellt dir ein schönes GUI...
Danach überlegst du dir ein Format in dem du deine "ToDo's" speichern willst. (Die INI-Funktionen währen hier wohl zu empfehlen...)
Als nächstes schreibst du dir ein/zwei Funktionen mit denen du die "ToDo's" auslesen/speichern/bearbeiten kannst...
Nun müssen nur noch alle funktionen mit den richtigen Buttons usw. in deinem GUI verknüpft werden und deine "ToDo Liste" ist fertig. -
Hier mal ein kleines Beispiel-Script für einen TCP-Server:
Spoiler anzeigen
[autoit]Global $TCPPort = 1234, $TCPMainSocket, $MaxClients = 100, $Client[$MaxClients+1][2]
[/autoit] [autoit][/autoit] [autoit]
$Client[0][0] = 0TCPStartup()
[/autoit] [autoit][/autoit] [autoit]$TCPMainSocket = TCPListen(@IPAddress1,$TCPPort,$MaxClients)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
; Neue Verbindungen:
$NewClient = TCPAccept($TCPMainSocket)
If $NewClient <> -1 Then _AddClient($NewClient)
; Pakete Empfangen:
If $Client[0][0] > 0 Then
For $i = 1 To $MaxClients
If $Client[$i][0] <> False Then
For $try = 1 To 3
$Recv = TCPRecv($Client[$i][0],1024)
If Not @error Then
_ReceivedData($i,$Recv)
ExitLoop
EndIf
If $try = 3 Then
_DelClient($i)
EndIf
Next
EndIf
Next
EndIf
WEndFunc _AddClient($Socket)
[/autoit] [autoit][/autoit] [autoit]
If $Client[0][0] < $MaxClients Then
For $i = 1 To $MaxClients
If $Client[$i][0] = False Then
$Client[0][0] += 1
$Client[$i][0] = $Socket
$Client[$i][1] = '???'
ConsoleWrite('new client on slot '&$i&' connected...'&@TAB&'('&$Client[0][0]&'/'&$MaxClients&' slots used)'&@CRLF)
ExitLoop
EndIf
Next
Else
TCPSend($Socket,'server_full')
TCPCloseSocket($Socket)
ConsoleWriteError('new client not adopted! no more free slots...'&@TAB&'('&$Client[0][0]&'/'&$MaxClients&' slots used)'&@CRLF)
EndIf
EndFuncFunc _DelClient($Slot)
[/autoit] [autoit][/autoit] [autoit]
TCPCloseSocket($Client[$Slot][0])
$Client[$Slot][0] = False
$Client[$Slot][1] = ''
$Client[0][0] -= 1
ConsoleWriteError('client on slot '&$Slot&' kicked...'&@TAB&'('&$Client[0][0]&' clients left)'&@CRLF)
EndFuncFunc _ReceivedData($Slot,$Data)
[/autoit]
ConsoleWrite('received the following data on slot '&$Slot&':'&@TAB&$Data&@CRLF)
EndFunc
Ich denke der Client sollte kein Problem darstellen, solange du nur ein reines Server-Client-Netz möchtest...