Was funktioniert denn nicht? Ich habe hier gerade keine geeignete Testumgebung...
Beiträge von BinDannMalWeg
-
-
Sollte es eine andere Möglichkeit geben, dann erklärs mir bitte
Zum Beispiel so:
Spoiler anzeigen
[autoit]GUICreate("Arbeitszeiten", 300, 190)
[/autoit] [autoit][/autoit] [autoit]
$Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35)
$Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
$Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
$PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
$PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)
GUICtrlCreateLabel("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10)
GUICtrlCreateLabel("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
GUICtrlCreateLabel("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
GUICtrlCreateLabel("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
GUICtrlCreateLabel("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)
; Bis hier habe ich dein Script eigentlich nur etwas 'geschrumpft'...
; Die folgenden Deklarationen (So nennt man das wenn man ne Variable erstellt) dienen nur der Vereinfachung/verkürzung des Scripts:
Global $Dir = @UserProfileDir & '\Arbeits-Info\' ; In der Variable $Dir speichern wir den Pfad zu unserem 'Arbeitsverzeichniss'
Global $Date = @MDAY & '/' & @MON & '/' & @YEAR ; $Date wird mit dem heutigen Datum sammt trennzeichen bestückt
Global $LogFile = $Dir & 'Arbeitszeiten-' & $Date & '.txt' ; und in $LogFile speichern wir uns den kompletten Pfad zu unserer Log-datei...
If Not FileExists($Dir) Then DirCreate($Dir) ; Wenn du die englische Sprache beherrschst, sollte diese zeile wohl klar sein...
GUISetState(@SW_SHOW)Do
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Select
Case $msg = $Start
; Zu fileWrite kannst du dir ja mal die benötigten parameter ind er Hilfe ansehen...
; Anonsten werden hier nur Variablen, Strings (Zeichenketten) und Autoit interne Makros (zB. @HOUR -> aktuelle Stunde)verwendet...4
; Sie alle werden in der Hilfe erläutert...
FileWrite($LogFile, '####NEUER TAG#### - ' & $Date & @CRLF & 'Arbeiszeit von ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
Case $msg = $PauseStart
FileWrite($LogFile, 'Pause von ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
Case $msg = $PauseEnde
FileWrite($LogFile, 'Pause bis ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
Case $msg = $Stop
FileWrite($LogFile,'Arbeitszeit bis '& @HOUR & ':' & @MIN & ':' & @SEC & @CRLF & '================================' & @CRLF)
EndSelect
Until $msg = -3 Or $msg = $Ende ; in dieser zeile habe ich noch $GUI_EVENT_CLOSE durch -3 ersetzt, da dann das große Include nicht mehr benötigt wird...Exit
[/autoit]Ja ich habe dein Script 'nur' nach Autoit portiert...
Und wenn du keinen 'Nerv' zum deklarieren von variablen hast, dann kannst du das mit dem programmieren gleich wieder lassen...
Edit: Ich habe meinen/deinen Code mal auskommentiert... Noch ein kleiner Tipp: drück in Scite öfter mal F1 -
Nur mal so zur Info: Ich habe mir dein Scriptchen angesehen und ich habe die 'gewünschte' Funktion auch verstanden, aber wie soll ich denn an deinem Script erkennen, dass du bis vor Kurzem 'alles' mit Batch-Scripten erledigt hast? Ich mein ich kann das doch nicht riechen?
Naja wie dem auch sei solltest du dir, auch wenn du scheinbar sehr viel Überwindung dafür benötigst, den passenden Hilfe-Eintrag zu FileWrite() anschauen...
-
Ehhhhhm du kennst den Befehl FileWrite()
-
Ganz pauschal muss ich dir da leider sagen: Nein! Natürlich gibt es Ausnahmen, zum Beispiel wenn auf dem PC Autoit installiert ist, oder wenn die Funktion nur aus 'einzelnen' Funktionen besteht, die nicht zusammen abreiten und sich daher mit Execute() ausführen lassen. Alternativ lässt sich so etwas natürlich auch über eine _RunPE() Funktion lösen, die ich hier jetzt aber nicht posten werde, da damit viel Unsinn gemacht werden kann...
*hust* Google *husthust*
Worum gehts denn speziell? Wenn du uns sagst was du eigentlich machen möchtest, lässt sich dir viel viel besser helfen... -
Es gibt ein Redraw-Event, das für solche Abfragen benutzt wird. Ich hab das schon bei vielen GDI-Scripten gesehen, allerdings hab ich es selbst noch nie benutzt...
Ich denke früher oder später wird einer der GDI+ Pro's hier reinschneien und die Lösung posten...
-
Wozu machst du den Umweg über StringFormat?
Spoiler anzeigen
[autoit]Local $Resvname = '31-08.rar'
[/autoit] [autoit][/autoit] [autoit]
Local $FileDir = @ScriptDir & '\\rar\' & $Resvname$FileHandle = FileOpen($FileDir, 16)
[/autoit]
$FileRead = FileRead($FileHandle)
FileWrite(@ScriptDir & '\get\test.rar', $FileRead)
ConsoleWrite('error: ' & @error & @CRLF)
ConsoleWrite($FileRead)
FileClose($FileHandle) -
-
Achso okay das hatte ich dann wohl übersehen...
Generell würde ich dir aber empfehlen deine Scripte etwas umzubauen, denn wenn mit TCP gearbeitet wird ist es meist besser die Pakete intern 'unvorbereitet' zu empfangen, da sich ansonsten (wenn mal ein wichtiges Paket verloren geht oder fehlerhafte Pakete ankommen) das gesamte Programm aufhängen wird, wenn man nicht alles drei mal absichert... Daher wäre es zu empfehlen nach dem alles gestartet/erstellt/verbunden wurde in eine Hauptschleife über zu gehen, die ALLE Pakete empfängt und dann eben mit einem Switch nach eigenen 'Befehlen' sortiert. Möchtest du dann eine zum Beispiel eine Liste aller laufenden Prozesse anfordern, sendest du ein Paket mit dem entsprechenden Befehl an das Gegenüber und dieses schickt die Antwort dann zurück, wenn es die Antwort ganz erstellt/ausgeführt hat. Das hat dann den Vorteil, dass dein Script sich nicht aufhängt wenn mal eine Antwort etwa länger braucht oder ausbleibt. Außerdem lassen sich so prima auch mehrere Befehle/Pakete schnell nacheinander 'in Auftrag geben' da eben nicht speziell auf die Antwort gewartet wird... -
Nein, eben nicht Awesome! In einem seiner Threads (Wenn nicht sogar seinem ersten) suchte er Hilfe zum designen seiner GUIs, da er schließlich nicht sehen kann, wo sich ein Button/Input o. ä. befindet...
-
Ich muss zugeben ich habe deinen Post + Quellcode nur überflogen, aber was mir direkt aufgefallen ist, ist folgendes: In deinem Server-Script beginnst du in Zeile 29 eine Endlos-Schleife, die so weit ich das überblicken kann KEINE Abbruchbedingung besitzt. Daher ist es unmöglich, dass deine eigentliche Hauptschleife in Zeile 114 jemals aufgeführt wird. Ich verweise hier gerne nochmal auf dieses Tutorial von chesstiger, in dem die Grundlegende Strukturierung von Skripten ziemlich einfach erklärt wird...
Denn wenn du all deine Funktionen in einem 'Block' am Ende deines Scripts 'gelagert' hättest, würde so etwas ziemlich schnell auffallen...
-
Kein Wunder, der Submit 'Button' läuft ja auch über Javascript...
-
Ich dachte ich steuere auch einfach mal eine Funktion bei... _Kollision_Strecke_Punkt()
[autoit]
Hier einmal in kurz:Func _Kollision_Strecke_Punkt($Px, $Py, $Ax, $Ay, $Bx, $By)
[/autoit]
Return (Sqrt(($Ax - $Bx) ^ 2 + ($Ay - $By) ^ 2) = (Sqrt(($Ax - $Px) ^ 2 + ($Ay - $Py) ^ 2) + Sqrt(($Bx - $Px) ^ 2 + ($By - $Py) ^ 2)))
EndFuncund hier nochmal in lang:
Spoiler anzeigen
[autoit]Func _Kollision_Strecke_Punkt__Lang($Px, $Py, $Ax, $Ay, $Bx, $By)
[/autoit] [autoit][/autoit] [autoit]
;wenn
; strecke zwischen a und p
;plus
; strecke zwischen b und p
;gleich
; strecke zwischen a und b
;dann
; return 1
$Strecke_AP = _Distance($Ax, $Ay, $Px, $Py) ; --> Sqrt(($Ax-$Px)^2+($Ay-$Py)^2)
$Strecke_BP = _Distance($Bx, $By, $Px, $Py) ; --> Sqrt(($Bx-$Px)^2+($By-$Py)^2)
$Strecke_AB = _Distance($Ax, $Ay, $Bx, $By) ; --> Sqrt(($Ax-$Bx)^2+($Ay-$By)^2)
If $Strecke_AB = ($Strecke_AP + $Strecke_BP) Then
Return True
Else
Return False
EndIf
EndFunc ;==>_Kollision_Strecke_Punkt__LangFunc _Distance($_Ax, $_Ay, $_Bx, $_By)
[/autoit]
Return Sqrt(($_Ax - $_Bx) ^ 2 + ($_Ay - $_By) ^ 2)
EndFunc ;==>_Distance -
Also erstmal solltest du dein komplettes Script posten, zweitens wäre es sehr sehr viel übersichtlicher, wenn du zuvor in Scite einmal Strg+T drücken würdest (dieser Shortcut führt das Plugin Tidy aus) und drittens solltest du dir angewöhnen Quellcodes immer in einem Spoiler (die SP-Taste im Editor) und dann im Spoiler in einem Autoit-Tag (das Autoit-Zeichen im Editor) zu posten...
Außerdem wäre es nett, wenn du nocheinmal versuchen könntest dein Problem in einem Post verständlich und vor Allem komplett zu erläutern. Danke
-
Ich wollte mir gerade mal dein Script anschauen, doch mir fehlt leider die "Info.au3"
Es wäre nett wenn du diese auch anhängen könntest... Nun zur eigentlichen Grundfunktion des Scripts: Verstehe ich das richtig, dass die Idee dahinter ist für viele verschiedene Installationen eine Autoit-Funktionen zu erstellen, die die selbige dann automatisch installiert? Wenn dem so ist, solltest du vielleicht noch einmal über darüber nachdenken, ob ein solches Vorgehen wirklich sinnvoll ist. Denn jedes mal, wenn sich an einer Installation etwas ändert, müsste eine neue Version der Funktion erstellt werden... Das wäre, bei einer größeren Anzahl von Funktionen, allerdings nur durch eine riesige Community an fähigen Autoit-Scriptern wirklich realisierbar?!
Wäre es dann nicht einfacher ein Programm zu entwickeln, welches es 'Nicht-Programmierern' ermöglicht über 'Knöpfe und Felder' eine Automatische-Installationen zu erstellen und diese dann in Form von 'Paketen' zu exportieren? Diese Pakete könnten dann zum Beispiel auch mit mehreren Anderen in einer Exe-Datei zusammen als 'eine' ausführbare Installation zusammen gepackt werden usw usw usw...Das wäre mal ein wirklich sinnvolles Programm, aber ich schätze mal das gibts schon...
-
Zitat
Um solch eine Fälschung zu entlarven wird gerade gearbeitet.
Allerdings muss die Auswertung der Server-Antwort IMMER clientside passieren und genau hier liegt der Schwachtpunkt: Autoit
Und auch wenn man das Script wirklich sicher gegen Decompiling schützen würde, reicht eine Umleitung (hosts-Datei) von "zaziki.pf-control.de" auf den eigenen PC, auf dem dann der Emulator läuft, aus um die Authentifizierung aus zu hebeln...
-
-
*hust* Warum so lang?
[autoit]Local $Lyrics = '', $B = 'bottles'
[/autoit]
For $i = 99 To 1 Step -1
If $i = 1 Then $B = 'bottle'
$Lyrics &= $i & ' ' & $B & ' of beer' & @CRLF & $i & ' ' & $B & ' of beer on the wall' & @CRLF & $i & ' ' & $B & ' of beer' & @CRLF & 'Take one down, pass it around' & @CRLF
Next
MsgBox(0,'99',$Lyrics)*hust* *hust*
-
Die Idee ist im Grunde gut, nur mangelt es wohl an der Umsetzung und auch an Autoit selbst... Ich möchte jetzt nich alles wieder aufrollen, was meine Vorredner schon angemerkt haben, aber eine 'Sicherheits-Abfrage' für die man nur einen Usernamen benötigt, kann doch nicht dein Ernst sein, oder?
Vor allem wird in der UDF gleich noch eine Funktion mitgeliefert, mit deren Hilfe jeder sich beliebig viele 'Schlüssel' erstellen kann?! Man muss sich einfach nur ansehen, welche URL das 'geschützte' Programm herunterlädt und schon ist man im Besitz des Usernamens, mit dem sich dann beliebig viele Schlüssel erstellen lassen...
Noch dazu wird vom Server-PHP-Script anscheinend nur eine 1 oder eine 0 zurückgegeben?! Das heißt selbst ein Server-Emulator wäre in unter 15 Zeilen geschrieben...
-
-
Klar kannst du dir eine DLL programmieren und dann deine eigenen Funktionen daraus verwenden.
Allerdings wissen wir nicht ob du auch die nötigen Kenntnisse in zu mindest einer höheren Programmiersprache besitzt, um eine solche DLL zu schreiben... Außerdem stellt sich dann die Frage auf: Warum nicht gleich das komplette Programm in der schnelleren Programmiersprache schreiben?
-
Ich schätze er meint eher so etwas:
Spoiler anzeigen
[autoit]$Tag = InputBox('Eingabe','Geben sie einen Wochentag ein:','Samstag')
[/autoit] [autoit][/autoit] [autoit]Switch $Tag
[/autoit] [autoit][/autoit] [autoit]
Case 'Montag'
_Monday()
Case 'Dienstag'
_Tuesday()
Case 'Mittwoch'
_Wednesday()
Case 'Donnerstag'
_Thursday()
Case 'Freitag'
_Friday()
Case 'Samstag'
_Saturday()
Case 'Sonntag'
_Sunday()
Case Else
MsgBox(16,'Ausgabe','"'&$Tag&'" ist kein deutscher Wochentag!')
EndSwitchMsgBox(64,'Beenden','Dieses Beispiel wird nun beendet...')
[/autoit] [autoit][/autoit] [autoit]
ExitFunc _Monday()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,'Ausgabe','Die Funktion _Monday() wurde aufgerufen!')
EndFuncFunc _Tuesday()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,'Ausgabe','Die Funktion _Tuesday() wurde aufgerufen!')
EndFuncFunc _Wednesday()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,'Ausgabe','Die Funktion _Wednesday() wurde aufgerufen!')
EndFuncFunc _Thursday()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,'Ausgabe','Die Funktion _Thursday() wurde aufgerufen!')
EndFuncFunc _Friday()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,'Ausgabe','Die Funktion _Friday() wurde aufgerufen!')
EndFuncFunc _Saturday()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(64,'Ausgabe','Die Funktion _Saturday() wurde aufgerufen!')
EndFuncFunc _Sunday()
[/autoit]
MsgBox(64,'Ausgabe','Die Funktion _Sunday() wurde aufgerufen!')
EndFunc
Edit: Okay RR04 war schneller...