Dann teil doch bei jedem Komma
[autoit]"\[.+?\]"
[/autoit]
und setze die einzelnen Teilstücke nach belieben wieder zusammen.
Dann teil doch bei jedem Komma
[autoit]"\[.+?\]"
[/autoit]
und setze die einzelnen Teilstücke nach belieben wieder zusammen.
Normalerweise pausiert das Script sobald man auf das TrayIcon klickt.
Verhindern kann man das, indem man entweder:
Opt('TrayAutoPause', 0)
[/autoit]
einfügt (keine automatische Pause mehr, aber das TrayIcon ist noch vorhanden) oder gleich:
#NoTrayIcon
[/autoit]
einfügen und das TrayIcon komplett verstecken.
In AutoIt gibt es keine Deklaration der Datentypen. "Int" kann zwar vorzeichenbehaftet sein, aber nur 32 oder 64 Bit.
Du brauchst aber 16 Bit signed. Da bleibt dann nur selbst umwandeln.
Einfach bei Werten größer als 32768 den Wert 65536 abziehen, dann hast Du ein Integerwert mit Vorzeichen:
[autoit]
$hex = 0xFFFC
If $hex > 2 ^ 15 Then $hex -= 2 ^ 16
ConsoleWrite(Int($hex) & @CR)
Ich hattte mal ein Script erstellt, mit dem man den Codec (und einige andere Infos) zu einer AVI-Datei erhält.
Einfach das ZIP-Archiv aus dem Anhang irgendwohin entpacken und das Script starten.
Ich möchte ja mal anmerken, dass der AppData-Ordner im Verzeichnis "Users" liegt und nicht im Verzeichnis "User".
Manchmal scheitert es an einem Buchstaben. ![]()
GUICtrlSetLimit ist das Zauberwort. ![]()
Um Dein Script zu debuggen, kopierst Du einfach alle Funktionen aus Deinen benutzen Includes in Dein Script (oder eine temporäre Version davon) und startest dann das Script.
Dann hast Du die genaue Zeile, in der der Fehler auftritt.
Also, wenn Du die Zeile
#include <OutlookEX.au3>
[/autoit]
in Deinem Script stehen hast, dann öffnest Du die UDF, kopierst alle Zeilen daraus und fügst diese Zeilen anstelle der Includezeile ein.
Das machst Du mit allen Includes und Du hast das komplette Script.
Das ginge auch praktisch, mit Hilfe der Timer-UDF (der Timer wird nicht von einer MsgBox oder InputBox angehalten).
Aber ehrlich gesagt, ist es den Aufwand nicht wert. Eine kleine GUI lässt sich mit demselben "Aufwand" erstellen und man kann so nebenbei auch noch viel mehr beeinflussen.
War eigentlich keine große Mühe. Die "Doppelklick-Funktion" hatte ich auch schonmal gebraucht. Von daher war das meiste eher Copy & Paste.
Generell bevorzuge ich aber den OnEventMode. Mir gefällt es alles in Funktionen auszulagern (IMHO übersichtlicher), anstatt eine MsgLoop-Schleife zu verwenden.
Mal ganz abgesehen davon, dass es mit GUIGetMsg auch diverse Probleme gibt.
Hier mal Dein Script im OnEventMode (da gibt es das Problem mit GUIGetMsg nicht):
#include <GUIConstantsEx.au3>
Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]$winhandle = GUICreate("DESKTOP2", 300, 100, 200, 400)
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_DoppelklickLabel')
GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseWindow')
$ja = GUICtrlCreateLabel("Ja", 20, 20, 30, 15)
GUISetState()
Global $iTimer = TimerInit()
WinWaitClose($winhandle)
Exit
Func _CloseWindow()
GUIDelete($winhandle)
EndFunc ;==>_CloseWindow
Func _DoppelklickLabel()
Local $aCursorInfo = GUIGetCursorInfo($winhandle)
If @error Then Return
If $aCursorInfo[4] <> $ja Then Return
Local $iDoubleClickSpeed = RegRead('HKCU\Control Panel\Mouse', 'DoubleClickSpeed')
If TimerDiff($iTimer) < $iDoubleClickSpeed Then MsgBox(0, "Titel", "Text")
$iTimer = TimerInit()
EndFunc ;==>_DoppelklickLabel
Die Funktion ist fehlerhaft und Du hast beim Aufruf auch noch Fehler gemacht. So funktioniert es:
$sText = InputBox("Daten", "")
$sKey = InputBox("Passwort", "")
$sResult = _XORCrypt($sText, $sKey)
ConsoleWrite('verschlüsselt: ' & $sResult & @CR)
$sResult = _XORCrypt($sResult, $sKey)
ConsoleWrite('entschlüsselt: ' & $sResult & @CR)
Func _XORCrypt($sText, $sKey)
Local $sResult = ''
For $i = 1 To StringLen($sText)
$sResult &= Chr(BitXOR(Asc(StringMid($sText, $i, 1)), Asc(StringMid($sKey, Mod($i - 1, StringLen($sKey)) + 1, 1))))
Next
Return $sResult
EndFunc ;==>_XORCrypt
[verschoben nach "Andere Programmiersprachen"]
Das "entschärfen" der Zufallswerte habe ich bewusst so gemacht, weil es ja schon ein Spiel sein soll und nicht nur reine Glückssache.
Hier geht es ja nicht darum, dass man irgendwelche Gewinne "ausgezahlt" bekommt. Es geht ja "nur" um Punkte.
Und auch wenn es jetzt möglich ist, mehrmals hintereinander (ich habe schon 3 JACK's in einem Spiel geschafft) das gleiche Segment zu treffen, so ist die Anordnung (JACK und dahinter gleich NULL) doch schon sehr risikoreich.
Es kam dann doch des öfteren vor, dass ich mit dem 10. Dreh keine Punkte mehr hatte. ![]()
So...die neue Version ist fertig (siehe Post#1).
Anderer Zeiger, zusätzliche Sounds und die HiScore-Tabelle sind eingebaut. ![]()
Es könnte sein, dass die AutoIt-Befehle nicht komplett UNC-konform arbeiten.
In dem Fall müsstest Du es mal mit den Befehlen der Windows-Commandozeile versuchen.
Vielen Dank für die vielen netten Geburtstagswünsche!
Ich habe einige schöne Geschenke bekommen: Der Hobit in 3D, Avatar in 3D, Der Weltraum in 3D und einen Bluray-Brenner für meinen Rechner. ![]()
UEZ: Stimmt, die Farbe des Zeigers werde ich noch ändern. Und ja, das Drehrad ist selbst erstellt. Bei der Highscore-Tabelle bin ich gerade dabei. ![]()
Das scheint mit $GUI_EVENT_PRIMARYDOWN und $GUI_EVENT_PRIMARYUP nicht zu klappen. Zumindest in dieser Konstellation nicht.
Ich habe aber doch einen Workaround gefunden. Das wird in der kommenden Version (1.2) enthalten sein. Mir ist nur gerade noch etwas eingefallen, was ich noch einbauen kann, deshalb gibt es die nächste Version erst etwas später.
Wen der Mehrfachklick stört, kann die Funktion "_StopPower" gegen diese hier austauschen:
Func _StopPower()
If $iScoreCount > 9 Or $iPower = 0 Then
AdlibUnRegister()
Return
EndIf
Local $aInfo = GUIGetCursorInfo($hGui)
If $aInfo[4] <> $idStart Then Return
AdlibUnRegister()
Btn_Drehen()
EndFunc ;==>_StopPower
Andy: Ich muss gestehen, dass ich einige Randomwerte eingebaut habe, um das drehen des Rades nicht so vorhersehbar zu machen. Im Prinzip simuliere ich damit einen "unrunden" Lauf des Rades. Das macht das Spiel etwas schwerer.
Storyteller: Für das Problem mit dem Mehrfachklick auf den Button fällt mir im Moment keine Lösung ein. Kann man irgendwie einen Button-Event löschen? Jemand eine Idee?