Also erstmal muss ich sagen, dass dieses Script aus Langeweile entstand und ich deshalb keine besonders ausführliche Anleitung geschrieben habe. Aber wenn ich Zeit habe werde ich den Startpost mal überarbeiten...
Blume: Natürlich könnte man eine derartige Abfrage einbauen, aber meiner Meinung wäre dies unnötig, da es nie Viren geben wird die mein kleines Script ausnutzen, da es sich schlicht weg nicht lohnen würde. Erstens bin ich mir nicht sicher ob es außer mir überhaupt irgendjemand auf der Welt benutzt und Zweitens lässt dich der Name der Autorun Datei im Script beliebig umstellen, was das ganze noch einmal 'sichert'.
Beiträge von BinDannMalWeg
-
-
*Hust* hier *Hust* *Hust*
-
Ich weis, dass Lottich jetzt sein eigenes Script verwendet, aber da ich auch schon eine kürzere Version geschrieben habe, die auch mehr Webserver verwenden kann wollte ich sie euch nicht vorenthalten...
Spoiler anzeigen
[autoit]#include <INet.au3>
[/autoit] [autoit][/autoit] [autoit]
Global $State = False, $Round = TimerInit(), $LogFile = @ScriptDir & '\InternetLogger.ini', $Server[5] = [4, 'www.google.com', 'www.facebook.com', 'www.youtube.com', 'www.yahoo.com'], $Intervall = 1, $Timeout = 4000While 1
[/autoit]
$Offline = 0
For $i = 1 To $Server[0]
If Ping($Server[$i], $Timeout) = 0 Then $Offline += 1
Next
If $Offline = $Server[0] Then
If Not $State Then
$State = TimerInit()
IniWrite($LogFile, 'detailierte Liste', @HOUR & ':' & @MIN & ':' & @SEC & @TAB & @MDAY & '/' & @MON & '/' & @YEAR & @TAB, @TAB & 'Offline' & @TAB & 'Internetverbindung verloren!')
; wir sind offline...
EndIf
Else
If $State Then
$OfflineTime = Round(TimerDiff($State), 0)
$State = False
IniWrite($LogFile, 'Ausfälle', 'Anzahl', Number(IniRead($LogFile, 'Ausfälle', 'Anzahl', 0)) + 1)
IniWrite($LogFile, 'Ausfälle', 'Zeit total', Number(IniRead($LogFile, 'Ausfälle', 'Zeit total', 0)) + $OfflineTime)
IniWrite($LogFile, 'detailierte Liste', @HOUR & ':' & @MIN & ':' & @SEC & @TAB & @MDAY & '/' & @MON & '/' & @YEAR & @TAB, @TAB & 'Online' & @TAB & 'Wieder online mit der IP ' & _GetIP() & ' nach ' & $OfflineTime & 'ms')
; wir sind wieder online nach $OfflineTime millisekunden...
EndIf
EndIf
$Sleep = ($Intervall * 1000) - TimerDiff($Round)
If $Sleep > 0 Then Sleep($Sleep)
$Round = TimerInit()
WEnd -
Ich habe diesen Thread jetzt zwar nur mal schnell überflogen, aber mir ist eine Sache am Ablauf nicht ganz klar geworden. Zuerst macht der User eine 6 stellige Eingabe. Diese wird dann mit Hilfe von
[autoit]$Input2 = $Input - Int($Input/32)*32
[/autoit]in eine andere Zahl umgerechnet. So weit so gut, aber wo her soll das Script jetzt wissen, dass zum Beispiel beim Ergebnis 0 dem Preis 12 beträgt? Oder meinst du mit deiner letzten Frage genau das? Wenn de so ist, könntest du die Ergebnisse und die dazu gehörigen Preise ja in einer Datei speichern, diese beim Start des Scripts in ein Array einlesen...
-
Ich will an dieser Stelle nur mal anmerken, dass es nicht sehr zuverlässig ist nur Google.de anzupingen. Währe es nicht viel sinnvoller eine Reihe von Webseiten anzupingen? Wenn dann alle Server nicht reagieren kann man sicher davon ausgehen, dass gerade keine Internetverbindung besteht...
-
Für so etwas gibt es doch spezielle Hardware Lösungen, wie sie in vielen Schulen eingesetzt werden.
-
Also erstmal muss ich auch dir leider sagen, dass meine Glaskugel noch immer in Reparatur ist, weshalb ich und auch die Anderen hier im Forum dir wohl so nicht helfen können. Was lernen wir daraus? Genau einfach mal das eigene Script posten, dann wird auch geholfen...
[autoit]
Da ich dein Script ja nicht kenne kann ich jetzt nichts genaueres sagen, aber ich vermute du hast eine Endlos-Schleifen, die die CPU-Auslastung in die Höhe treibt. Bau doch einfach mal einSleep(500)
[/autoit]in die Schleife ein...
-
*hust* hier *hust* *hust*
-
Hey um deine Fragen zu beantworten:
ZitatWie arbeitet GDI+?
Du musst es dir so vorstellen, als wäre das Arsenal an GDI-Befehlen eine Kiste mit ganz ganz ganz vielen verschieden Malwerkzeugen. Natürlich brauchst du eine Fläche, auf der du malen kannst, deshalb erstellt man sich zum Beispiel eine GUI oder ein 'Bild'. In deinem Script hast du dann eine Hauptschleife, in der du die GUI erst übermalst und dann alles was auf der GUI zu sehen sein soll nacheinander mit den GDI-Befehlen drauf malst. Je nachdem wie schnell/langsam dies geschieht kann es auch zu Ruckeln/Flackern kommen. Dazu kannst du dich mal mit dem Thema Back-/Front-Buffer beschäftigen.
ZitatWelche Probleme werden generell mit GDI+ gelöst?
Zum Einen fast alles was mit Bildern zutun hat. (zB.: Bilder drehen/verkleinern/verzerren/anmalen/übermalen/färben/...) Zum Anderen ist es auch, wie oben schon beschrieben, möglich auf GUIs zu zeichnen und damit dann zum Beispiel Buttons und Co im eigenen Style zu erstellen. Auch kleinere Spiele lassen sich problemlos mit GDI+ erstellen. (Genauer gesagt das zeichnen 'des Spiels' auf die GUI...)
ZitatWie erstellt man damit Elemente?
Ich nehme jetzt einfach mal an, dass du mit 'Elemente' GUI-Controls meinst. In der Regel geht man so vor, dass man mit einem Grafikprogramm seiner Wahl entsprechende Grafiken für die Controls erstellt und sie dann mit GDI+ auf die GUI zeichnet...
ZitatGibt es dafür eine Art Designer?
Nein. Man benutzt, wie oben schon beschrieben, ein Grafikprogramm ala Photoshop/Gimp...
-
Sorry meine Glaskugel ist immer noch in Reparatur...
Wärst du so freundlich uns auch dein Script zu zeigen? Außerdem wäre es bestimmt hilfreich, wenn wir wüsten um was für ein Fenster es sich handelt... -
Ich weis ja nicht, aber wenn man auch nur ein kleines bisschen Englisch kann, dann sollte man die Fehlermeldungen von Autoit doch verstehen können...
ZitatLine 5 (File:"C:\\blablabla"):
$color = PixelGetColor($coord[0], $coord[1])
§color = PixelGetColor($coord^ ERROR
Error: Subscript used with non-Array variable.
Ganz einfach: $coord ist kein Array! Deshalb olltest du vorher immer überprüfen, ob dem so ist. Dazu könntest du dir ja mal die Funktion IsArray() anschauen... -
Nein wenn die 7za.exe im selben Verzeichnis wie das Script liegt passt das schon so...
-
Ich weis ja nicht wie diese 7za.exe genau funktioniert, aber ich würde mal sagen da fehlt ein Leerzeichen nach dem Parameter '-o' in Zeile 22.
-
Junge, jetzt erklär uns Unwissenden doch bitte mal ganz einfach was du den überhaupt machen willst.
-
Sorry aber hast du meinen Post überhaupt gelesen?
Bitte erklär uns doch mal den Unterschied zu deinem letzten Thread?!
Okay -
Also erstmal warum bist du nervös?
Außerdem ist das was du da beschreibst nicht exakt das Script, das ich dir in deinem letzten Thread geschrieben habe???
Und diese 'Ich brauche, ganz schnell'-Tour naja...
Aber wenn du es schon selbst versucht hast, dann kannst du uns ja mal dein Script zeigen. -
Sorry aber bitte was willst du?
Außerdem möchte ich dich bitten dir vielleicht mal die wirklich sehr guten Grund-Tutorials hier im Forum anzusehen.Wir können dir schließlich nicht alles vorkauen...
-
myAutorun ist eine von mir entwickelte Alternative zur 'autorun.inf' unter Windows. Da die Windows eigene Autostart-Funktion für CDs, USB-Sticks und HDDs schon oft von Viren, Trojanern und Co zur Verbreitung ausgenutzt wurde, hat Windows sie deaktiviert. So konnte zwar die Weiterverbreitung einiger Schadprogramme eingedämmt werden, allerdings ging auch eine wirklich nützliche Funktion mit drauf.
myAutorun schafft diesem Problem Abhilfe! Mit myAutorun lassen sich kinderleicht, eigene Autostart-Dateien erstellen, die nach der einmaligen Installation von myAutorun auf ihrem Computer, bei jedem Anschließen ausgeführt werden. Erstellen sie Autostarts für CDs, USB-Sticks, Festplatten und sogar Netzlaufwerke! Da myAutorun sich zum einen nicht weit verbreiten wird und zum Anderen sogar der Name der Autostart-Scripte beliebig änderbar ist, wird es keine Viren geben die myAutorun ausnutzen. So können sie fast alle Vorteile von automatischen Autoruns nutzen, ohne zusätzlich Gefahr zu laufen, dass sich ihr Computer über ihr mobilen Speichermedien neue Viren einfängt...
QuellcodeSpoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <INet.au3>
#include <Process.au3>
; Test auf Parameter-Unterfunktionen:
If Not @Compiled Then Exit
If $CmdLineRaw <> '' Then __CheckCmdLine($CmdLineRaw)
; Variablen/Konstanten deklarieren:
Global $DriveList[1] = [0]
Global Const $__AutorunFileName = 'autorun.txt', $__DriveCheckSleep = 1000, $__ShowTrayInfo = True, $__TrayInfoTimeout = 3While 1 ; Hauptschleife
[/autoit] [autoit][/autoit] [autoit]
Do
Sleep($__DriveCheckSleep)
$NewDrive = __NewDriveConnected()
Until $NewDrive[0] > 0 ; Warten bis neue Laufwerke gefunden werden...
For $i = 1 To $NewDrive[0] Step +1
If FileExists($NewDrive[$i] & '\' & $__AutorunFileName) Then
__TrayInfo('Neues Laufwerk mit Autorun... (' & StringUpper($NewDrive[$i]) & '\' & ')')
__AutoRun($NewDrive[$i]) ; Autorun-Datei auf neuem Laufwerk ausführen...
Else
__TrayInfo('Neues Laufwerk ohne Autorun... (' & StringUpper($NewDrive[$i]) & '\' & ')')
EndIf
Next
WEndFunc __AutoRun($Drive) ; Ausführen von vorhanden Autorun-Datein mithilfe von Parameterübergaben an 2. Session dieser Exe...
[/autoit] [autoit][/autoit] [autoit]
Local $File = FileOpen($Drive & '\' & $__AutorunFileName, 0), $CurrentLine = 0, $Seperator
If $File <> -1 Then
While 1
$CurrentLine += 1
$Line = FileReadLine($File, $CurrentLine)
If @error Then ExitLoop
$Seperator = StringInStr($Line, '=')
If $Seperator Then
$Command = StringLower(StringLeft($Line, $Seperator - 1))
$Content = __ReplaceVars(StringTrimLeft($Line, $Seperator), $Drive)
Switch $Command
Case 'message'
If $Content <> '' Then ShellExecute(@ScriptFullPath, ' message:' & $Content)
Case 'shellexecute'
If $Content <> '' Then ShellExecute(@ScriptFullPath, ' shellexecute:' & $Content)
Case 'execute'
If $Content <> '' Then ShellExecute(@ScriptFullPath, ' execute:' & $Content)
Case 'run'
If $Content <> '' Then ShellExecute(@ScriptFullPath, ' run:' & $Content)
Case 'cmd'
If $Content <> '' Then ShellExecute(@ScriptFullPath, ' cmd:' & $Content)
Case 'sleep'
Sleep($Content)Case Else
[/autoit] [autoit][/autoit] [autoit]
__TrayInfo('Unbekannter Befehl: "' & $Command & '" in ' & $Drive & '\' & $__AutorunFileName & ' gefunden!', 2)
EndSwitch
EndIf
WEnd
Else
__TrayInfo(StringUpper($Drive) & '\' & $__AutorunFileName & ' konnte nicht gelesen werden!', 3)
EndIf
EndFunc ;==>__AutoRunFunc __NewDriveConnected($TYP = 'ALL')
[/autoit] [autoit][/autoit] [autoit]
Local $i, $y, $NewList, $Found, $Del[1] = [0], $Return[1] = [0]
$NewList = DriveGetDrive($TYP)
; Entfernte Drives null setzen:
For $i = 1 To $DriveList[0] Step +1
$Found = False
For $y = 1 To $NewList[0] Step +1
If $DriveList[$i] = $NewList[$y] Then
$Found = True
ExitLoop
EndIf
Next
If Not $Found Then
_ArrayAdd($Del, $i)
$Del[0] += 1
EndIf
Next
; Null gesetzte Drives löschen:
For $i = 1 To $Del[0] Step +1
_ArrayDelete($DriveList, $Del[$i])
Next
; Neues Drive finden:
For $i = 1 To $NewList[0] Step +1
$Found = False
For $y = 1 To $DriveList[0] Step +1
If $NewList[$i] = $DriveList[$y] Then
$Found = True
ExitLoop
EndIf
Next
If Not $Found Then
_ArrayAdd($Return, $NewList[$i])
$Return[0] += 1
EndIf
Next
$DriveList = $NewList
Return $Return
EndFunc ;==>__NewDriveConnectedFunc __TrayInfo($Text, $Style = 1)
[/autoit] [autoit][/autoit] [autoit]
If $__ShowTrayInfo Then TrayTip('myAutorun', $Text, $__TrayInfoTimeout, $Style)
EndFunc ;==>__TrayInfoFunc __CheckCmdLine($Code)
[/autoit] [autoit][/autoit] [autoit]
$Seperator = StringInStr($Code, ':')
If $Seperator = 0 Then Exit
$Command = StringLower(StringLeft($Code, $Seperator - 1))
$Content = StringTrimLeft($Code, $Seperator)
Switch $Command
Case 'message'
MsgBox(0, 'myAutorun', $Content, 0)
Case 'shellexecute'
ShellExecute($Content)
Case 'execute'
Execute($Content)
Case 'run'
Run($Content)
Case 'cmd'
_RunDos($Content)
EndSwitch
Exit
EndFunc ;==>__CheckCmdLineFunc __ReplaceVars($String, $Drive)
[/autoit]
$String = StringReplace($String, '%drive%', $Drive, 0, 0)
$String = StringReplace($String, '%hour%', @HOUR, 0, 0)
$String = StringReplace($String, '%min%', @MIN, 0, 0)
$String = StringReplace($String, '%sec%', @SEC, 0, 0)
$String = StringReplace($String, '%year%', @YEAR, 0, 0)
$String = StringReplace($String, '%month%', @MON, 0, 0)
$String = StringReplace($String, '%mday%', @MDAY, 0, 0)
$String = StringReplace($String, '%user%', @UserName, 0, 0)
$String = StringReplace($String, '%pcname%', @ComputerName, 0, 0)
$String = StringReplace($String, '%crlf%', @CRLF, 0, 0)
$String = StringReplace($String, '%lf%', @LF, 0, 0)
$String = StringReplace($String, '%cr%', @CR, 0, 0)
$String = StringReplace($String, '%lan%', @IPAddress1, 0, 0)
$String = StringReplace($String, '%wan%', _GetIP(), 0, 0)
$String = StringReplace($String, '%fullpath%', $Drive & '\' & $__AutorunFileName, 0, 0)
Return $String
EndFunc ;==>__ReplaceVars
BefehleSpoiler anzeigen
Bei den unten aufgeführten Befehl ist zu beachten, dass die Groß- und Kleinschreibung keine Beachtung findet. Außerdem sollte jeder Befehl in eine neue Zeile geschrieben und durch ein '='-Zeichen, ohne Leerzeichen, von seinem Parameter getrennt werden.
Anzeigen einer Nachricht auf dem Bildschirm:
Ausführen/Anzeigen von Dateien/Links usw.:
(Äquivalent zum Windows-Befehl 'ShellExecute')
Ausführen eines Strings/Autoit-Befehls:
(siehe Autoit-Befehl 'Execute')
Ausführen von Programmen:
Auführen von Dos-Befehlen:
Anhalten der Script-Abarbeitung für x Millisekunden:
Weitere Befehle werden noch ergänzt...
Außerdem können in den Parametern aller Befehle folgende Makros genutzt werden:Code
Alles anzeigen%dive% aktuelles Laufwerk in der Form 'C:' %hour% aktuelle Stundenzahl %min% aktuelle Minutenzahl %sec% aktuelle Sekundenzahl %year% aktuelles Jahr %month% aktueller Monat (als Zahl) %mday% aktueller Tag des Monats %user% aktueller Beuntzername %pcname% aktueller Computername %crlf% Zeilenumbruch %cr% Ascii-Zeichen 13 %lf% Ascii-Zeichen 10 %lan% lokale IP-Adresse %wan% globale IP-Adresse %fullpath% kompletter Pfad zum Autorun-Script
Beispiel Autostart-Script:
Spoiler anzeigen
Codemessage=Danke das du auf deinem Computer ('%pcname%') myAutorun installiert hast. %crlf%Heute ist der %mday%.%month%.%year% und wir haben gerade %hour%:%min%:%sec%Uhr. %crlf%Deine lokale IP ist die %lan% und global hast du gerade die IP %wan% ;) Message=Hallo %user%! execute=Beep(500, 1000) cmd=echo Ich bin eine Autorun-Datei auf dem Laufwerk %drive% und um mich zu finden brauchst du diesen Pfad '%fullpath%' > %drive%\Neue-Textdatei-aus-Autostart-Script.txt shellexecute=notepad
Alle Dateien finden sich auch im Anhang...
-
War das ganze nicht so gedacht, dass das dein Autoit-Script über INetGet() das PHP-Script mit bestimmten Parametern aufruft, welches dann eine Verbindung zur Datenbank aufbaut, damit deine Datenbank-Daten nicht im Autoit-Script oder auf dem User-Computer auftauchen?
-
Doch der sogenannte 'Interpreter' ist Autoit!
Du musst dir das so vorstellen: Bei der Installation von Autoit auf deinem PC wurde eben dieser Interpreter (In Form der Autoit.exe) auf deinen PC kopiert. Jedes mal wenn du eines deine Scripte ausführst, wird nur dieser Autoit-Interpreter mit dem Pfad zu deinem Script aufgerufen. Der Interpreter geht jetzt, vereinfacht gesagt, dein Script 'zeilenweise' durch und führt die Befehle aus. Wenn du dein Autoit-Script mit Aut2Exe.exe zu einer Exe-Datei 'konvertierst', passier nichts anderes, als das der Interpreter (Autoit.exe) gemeinsam mit deinem Script in eine neue Exe-Datei gesteckt wird. Wenn du nun diese neue Exe-Datei ausführst, dann wird nur der Interpreter aus der Exe heraus gestartet und dieser 'interpretiert' dein Script dann...
Edit: progandy war schneller...