Hi,
ja, so ein Event gibt es http://msdn.microsoft.com/en-us/library/aa376890(VS.85).aspx
Mit GUIRegisterMessage dürfte das gehen, morgen mach ich das mal ...
Beiträge von anno2008
-
-
Hi,
[autoit]
keine Ahnung, benutze Vista nicht, ich hab nur gehört, dass#RequireAdmin
[/autoit]
am Scriptanfang mit Vista wunder bewirkt -
Hi,
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <File.au3>$path = "C:\"
[/autoit] [autoit][/autoit] [autoit]$files = _FileListToArray($path, "*.txt", 1)
[/autoit] [autoit][/autoit] [autoit]
If @error Then
MsgBox(48, "Error", "No Files\Folders Found.")
Exit
EndIf_ArrayDisplay($files)
[/autoit] [autoit][/autoit] [autoit]for $i = 1 to UBound($files)-1
[/autoit]
FileDelete($path & $files[$i])
NextBezieht allerdings Unterordner nicht mit ein.
Aber dafür hat BugFix mal ne schöne Funktion geschrieben, mit der man auch Dateien in Unterordnern finden kann... -
Hi,
zu 1.
Spoiler anzeigen
[autoit]#include<file.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<array.au3>Global $pattern = ".exe"
[/autoit] [autoit][/autoit] [autoit]$exelist_un = _FileListToArray(@DesktopDir, "*" & $pattern, 1)
[/autoit] [autoit][/autoit] [autoit]
If @error Then
MsgBox(0, "", "error")
Exit
EndIf; vorher
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($exelist_un)For $i = 1 To UBound($exelist_un) - 1
[/autoit] [autoit][/autoit] [autoit]
$exelist_un[$i] = StringTrimRight($exelist_un[$i], StringLen($pattern))
Next;nachher
[/autoit]
_ArrayDisplay($exelist_un)zu 2. (ich gehe davon aus du meinst eine Combobox?
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<file.au3>Global $pattern = ".exe", $string = ''
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Test", 165, 37, 618, 602)
[/autoit] [autoit][/autoit] [autoit]
$Combo1 = GUICtrlCreateCombo("", 9, 8, 145, 25)$exelist_un = _FileListToArray(@DesktopDir, "*" & $pattern, 1)
[/autoit] [autoit][/autoit] [autoit]
If @error Then
MsgBox(0, "", "error")
Exit
EndIfFor $i = 1 To UBound($exelist_un) - 1
[/autoit] [autoit][/autoit] [autoit]
$exelist_un[$i] = StringTrimRight($exelist_un[$i], StringLen($pattern))
NextFor $i = 1 To UBound($exelist_un) - 1
[/autoit] [autoit][/autoit] [autoit]
$string = $string & $exelist_un[$i] & '|'
NextGUICtrlSetData($Combo1, $string)
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd -
Hi,
Sieb des Eratosthenes:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>Global Const $max = 100001
[/autoit] [autoit][/autoit] [autoit]
Global $string = ''
Dim $prim[$max + 1]For $i = 1 To $max - 1
[/autoit] [autoit][/autoit] [autoit]
$prim[$i - 1] = False
NextFor $i = 2 To $max / 2
[/autoit] [autoit][/autoit] [autoit]
For $j = 2 To $max / $i
$prim[$i * $j] = True
Next
NextFor $i = 2 To $max
[/autoit] [autoit][/autoit] [autoit]
If Not $prim[$i] Then $string = $string & $i & ' ; '
Next_StringDisplay($string, -1, $WS_VSCROLL)
[/autoit] [autoit][/autoit] [autoit];===============================================================================
[/autoit]
; Author.........: Oscar (http://www.autoit.de)
;===============================================================================
Func _StringDisplay($sText, $sTitle = 'StringDisplay', $sEditStyle = -1, $iWidth = 400, $iHeight = 300, $iLeft = -1, $iTop = -1)
If Not IsDeclared('BS_DEFPUSHBUTTON') Then Local Const $BS_DEFPUSHBUTTON = 0x00000001
If Not IsDeclared('GUI_EVENT_CLOSE') Then Local Const $GUI_EVENT_CLOSE = 0xFFFFFFFD
If Not IsDeclared('WS_EX_COMPOSITED') Then Local Const $WS_EX_COMPOSITED = 0x02000000
If Not IsDeclared('WS_MAXIMIZEBOX') Then Local Const $WS_MAXIMIZEBOX = 0x00010000
If Not IsDeclared('WS_MINIMIZEBOX') Then Local Const $WS_MINIMIZEBOX = 0x00020000
If Not IsDeclared('WS_SIZEBOX') Then Local Const $WS_SIZEBOX = 0x00040000
Local $bEventMode = Opt('GUIOnEventMode', 0)
Local $hGui = GUICreate($sTitle, $iWidth, $iHeight, $iLeft, $iTop, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX), $WS_EX_COMPOSITED)
Local $hEdit = GUICtrlCreateEdit($sText, 5, 5, $iWidth - 10, $iHeight - 65, $sEditStyle)
GUICtrlSetResizing(-1, 2 + 4 + 32 + 64)
Local $hClose = GUICtrlCreateButton('Close', $iWidth / 2 - 25, $iHeight - 55, 50, 22, $BS_DEFPUSHBUTTON)
GUICtrlSetResizing(-1, 64 + 256 + 512)
ControlFocus($hGui, '', $hClose)
GUISetState(@SW_SHOW, $hGui)
While True
Switch GUIGetMsg()
Case $hClose, $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
ControlFocus($hGui, '', $hEdit)
Local $sSelectedText = ControlCommand($hGui, '', $hEdit, 'GetSelected', '')
If @error Then $sSelectedText = ''
GUIDelete($hGui)
Opt('GUIOnEventMode', $bEventMode)
Return $sSelectedText
EndFunc ;==>_StringDisplay/Edit: Updatet mit _StringDisplay (thx Oscar ;))
-
Hi,
ja, dass das so ablaufen muss, ist mir auch klar, dafür hab ich das Array ja auch erstellt ;).Ich hatte nur gehofft jemand würde sich damit ein bisschen auskennen, deshalb seht das mal als ganz leichten *push* an :).
Falls wirklich niemand sonst ne Ahnung hab, muss ich das wohl aufgeben und noch ein bisschen lernen, bis ich sowas auch alleine auf die Reihe bekomme.
Aber danke für die bisherige Hilfe, wo ja schon gut Ansätze dabei waren :).
-
Hi Oscar
Herzlichen Glückwunsch zum Geburtstag
[Blockierte Grafik: http://img407.imageshack.us/img407/9941/geburtstag1va3.jpg]
-
Ja,
ok, das wäre schon mal eine Super Möglichkeit die Möglichen Richtungen zu speichern.
Damit wäre ein 1. Schritt schon mal getan.Nur mein Algorithmus muss ja alle Möglichkeiten ausprobieren.
Das ist ja Praktisch nur Brute Force. Ich weis nur nicht, wie ich auf die anderen Lösungen kommen soll.
1. Wenn nach oben möglich, dann prüfe Feld oben drüber.
2. Wenn von dort aus nach oben nicht möglich, dann prüfe Feld rechts.
usw. ...Jetzt muss ich ja aber irgendwie die Felder speichern, die ich gar nicht ausprobiert habe und in einem neuen Schritt auch diese Prüfen, bis ich wirklich alle Möglichkeiten durchgeackert habe.
Nur da hängts leider :(.Kannst du oder irgendjemand auch hier eine Anstupser geben ?
-
Hi,
Also mit Spielstein meinst du einfach meine Spielfigur?Ja, die darf sich nach allen Richtigen bewegen, solange sie auf dem Weg bleibt.
Die Violetten Felder sind Blockaden. Man darf die Blockaden nicht überschreiten. Wenn man mit der Würfelzahl genau auf die Blockade kommt, dann darf man die Blockade verschieben.
Andere Spieler könne wie bei Mensche-ärgere-dich-nicht "gefressen" werden. Ansonsten kann man sie ganz einfach überspringen. Man kann sich auf dem ganzen Spielfeld bewegen, sowohl vorwärts wie auch rückwärts, nur die Richtung, die beim ersten rücken genommen wurde muss logischerweise beibehalten werden.Aber die Blockaden und Spielerabfrage usw. kann ich auch selber einbauen, mir geht es eher um die Möglichkeit des Algorithmus. Denkt euch die Blockaden einfach weg.
Falls es doch noch jemanden interessiert, es handelt sich um das Spiel Malefiz
Danke!
-
Hi,
ich hab jetzt auch mal wieder ein Problem.
Vor einiger Zeit wollte ich das mal in Delphi lösen, habe es damals aber genauso wenig hinbekommen wie heute :P.Also, ich habe ein Spielfeld (in einem Array).
(Blaue Felder = Spielfeld = 0 ; Komplett gelbes Feld = Ziel = 2 ; Violett = Blockade = 1 [kann man nur "knacken" wenn man genau drauf kommt])[Blockierte Grafik: http://img523.imageshack.us/img523/8743/bild2ap8.jpg]
Mein Würfel hat für mich die Zahl 5 gewürfelt.
Die Spielfigur (schwarzer Punkt) steht auf einem Punkt im Spielfeld. Es gibt bei der Augenzahl 5 4 Möglichkeiten die Figur zu bewegen.So, jetzt brauche ich einen Algorithmus, der mir die möglichen Positionen ausgibt.
Man hat mir gesagt Breitensuche würde hier helfen. Ich verstehe auch den Sinn des Algorithmus, aber eigentlich ist der doch dafür gedacht um die kürzesten Wege zu finden.
Wie soll ich den jetzt aber anwenden, dass er mir die möglichen Wege zurückgibt?Ich kann leider auch keinen Anfangscode liefern, weil ich einfach nicht weiß wie ich es umsetzen soll.
Ein Pseudocode oder eine kleine Erklärung würde mir schon voll und ganz reichen für den Anfang :).Dankeschön
-
Warum machst du
[autoit]Func _Beep($Beep)
[/autoit]
If $Beep = 1 Then
Beep (1500,100)
Beep (1000,100)
Beep (800,100)
ElseIf $Beep = 2 Then
Beep (556,100)
Beep (686,100)
Beep (2200,100)
EndIf
EndFunc
die 5 Zeilen in ne Extra Datei?Jo, habs grad einmal getestet, scheint zu Funktionieren, zum üben ganz gut :).
-
[autoit]
#include <Array.au3>
[/autoit][autoit][/autoit][autoit]$days = StringSplit("Sun,Mon,Tue,Wed,Thu,Fri,Sat", ",")
[/autoit][autoit][/autoit][autoit]
_ArrayDisplay($days)Sleep(200)
[/autoit][autoit][/autoit][autoit]MsgBox(0, "", $days[0]) ; $days 0 enthält alle gefundenen Substrings, in dem Fall 7
[/autoit][autoit][/autoit][autoit]Sleep(200)
[/autoit][autoit][/autoit][autoit]MsgBox(0, "", UBound($days)) ; Ubound($days) gibt dir die Zahl an, wieviele Einträge in einem Array vorhanden sind.
[/autoit][autoit][/autoit][autoit]
; du kannst nachzählen :P, es sind 8, weil das erste Element, dass die Anzah der
; Einträge enthält mitgezählt wirdSleep(200)
[/autoit][autoit][/autoit][autoit]; Um jetzt wieder auf die 7 Einträge zu kommen, muss man von den 8 nochmal 1 abziehen, also:
[/autoit][autoit][/autoit][autoit]MsgBox(0, "", UBound($days) - 1)
[/autoit][autoit][/autoit][autoit]; jetzt hat man das selbe Ergebnis, wie bei $days[0] und man kann es immer verwenden, auch bei Funktionen, die ein Array
[/autoit]
; zurückgeben, das nicht 0-Based istKapiert?
-
Hi
Das Script:Spoiler anzeigen
[autoit]Global $send = IniReadSection("send.ini", "send") ; lese INI in Array
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $send[0][0]
[/autoit] [autoit][/autoit] [autoit]
HotKeySet($send[$i][0], "_start") ; setze alle Hotkeys
NextWhile 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100) ; Endlosschleife für Hotkey
WEndFunc _start()
[/autoit]
For $i = 1 To $send[0][0] ; von 1 bis zu der Anzahl der Einträge der INI
If ($send[$i][0] = @HotKeyPressed) Then ; Wenn der Hotkey der im Array $send vorne steht = der gedrückte Hotkey ist, dann ...
ControlSend("", "", "", $send[$i][1],1) ; sende den Text der im Array $send hinter dem Hotkey steht
ExitLoop ; und gehe aus der for-Schleife raus
EndIf
Next
EndFunc ;==>_startDie INI
(Name: send.ini ; selbes Verzeichnis wie Script)
Logischerweise Beliebig erweiterbar :).
-
Hi,
man muss nicht alles neu erfinden :).Mit der SciLexer.dll kann man relativ einfach auf das Syntax-Highlighting zugreifen.
Z.b. hier: http://www.autoitscript.com/forum/index.php?showtopic=51547&hl=syntax+highlighting
-
Aber dann läuft es weiter und eine neue Zahl wird vorne gebildet und die letzte fällt weg. Das stimmt ja dann so nicht ganz bei dir.
Das versteh ich jetzt nicht so genau.
Welche letzte fällt weg?Zitat von Pecadisentgegengesetzten zahlen sollen sich nach 4 maligem wiederholen
Ich denke mal, dass ist das, was du meinst, aber ich verstehe nicht was damit gemein ist :P.
-
Nein, ich glaub er mein, dass er eine 4-Stellige Randomzahl haben will.
Allerdings soll die ein Paar Kriterien erfüllen.
Wenn zum Beispiel bei der 1. Zahl bei Random 1 rausgekommen ist, dann darf die 2. Zahl, die durch Random ermittelt wird nicht 4 sein.
Und so soll das bis zum Ende durchlaufen werden.
Zum Beispiel:
1. Zahl wird durch Random ermittelt und ist: 1
2. Zahl wird durch Random ermittelt und darf nicht 4 sein. Also soll er solange Random machen, bis die 2. Zahl <> 4 ist. Da kommt jetzt z.B. 3 raus.
3. Zahl wird durch Random ermittelt und darf nicht 6 sein. Also soll er solange Random machen, bis die 3. Zahl <> 6 ist.usw...
Ich hoffe ich hab das richtig verstanden, ich bin mir auch nicht 100%ig sicher, dass ich keiner Fehler gemacht habe in meinem Programm, aber jetzt habe ich keine Zeit mehr...
-
Hi,
so?Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$test = generaterandom(10)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($test)Func generaterandom($anzahl)
[/autoit] [autoit][/autoit] [autoit]
Dim $random[4]
Dim $randomarray[1]For $i = 1 To $anzahl
[/autoit] [autoit][/autoit] [autoit]
$random[0] = Random(1, 8, 1)For $j = 1 To 3
[/autoit] [autoit][/autoit] [autoit]
Do
$random[$j] = Random(1, 8, 1)
Until $random[$j] <> _entgegen($random[$j - 1])
Next
;~ _ArrayDisplay($random)
_ArrayAdd($randomarray, $random[0] & $random[1] & $random[2] & $random[3])
Next
$randomarray[0] = UBound($randomarray) - 1Return $randomarray
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>generaterandomFunc _entgegen($zahl)
[/autoit] [autoit][/autoit] [autoit]
If $zahl = 7 Then Return 8
If $zahl = 8 Then Return 7If $zahl > 3 Then
[/autoit]
Return $zahl - 3
Else
Return $zahl + 3
EndIf
EndFunc ;==>_entgegenDarf man fragen für was man sowas braucht :P?
-
Hi,
ich bin ganz am Anfang von Regular Expressions, aber eigentlich müsste es doch langen, alles zu ersetzten, was zwischen" ESC und m", "ESC und G" und "ESC und h" liegt.Das müsste doch dann eignetlich so richtig sein, oder?
[autoit]Global $String,$Consmsg
[/autoit][autoit][/autoit][autoit]$String = "%G[?1034h[1;33mroot[1;37m@[1;32mipcop[1;37m:[1;31m~ [1;36m# [1;36m"
[/autoit][autoit][/autoit][autoit]$Consmsg = StringRegExpReplace($string,"(.*?)[mGh]","")
[/autoit][autoit][/autoit][autoit][/autoit]
MsgBox(0,"",$Consmsg) -
Hi,
langst so?
[autoit]Global $String,$Consmsg
[/autoit][autoit][/autoit][autoit]$String = "%G[?1034h[1;33mroot[1;37m@[1;32mipcop[1;37m:[1;31m~ [1;36m# [1;36m"
[/autoit][autoit][/autoit][autoit]$Consmsg = StringRegExpReplace($string,"(.*?)m","")
[/autoit]
MsgBox(0,"",$Consmsg) -
Wahrscheinlich wird die Datei von irgendnem Prozess benutzt.
Du musst entweder en richtigen Prozess schließen, falls das keine Auswirkungen auf das System hat, oder meistens reicht ein einfacher Neustart schon :).