1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. TimBlo

Beiträge von TimBlo

  • Tastatur Training - Buchstaben Aktualisieren

    • TimBlo
    • 20. Juli 2009 um 19:21

    wie gesagt du sollst alles in funktionen bauen, oder du gibst code, HotKeySet hat ja wirklich nicht viel in einer schleife zu suchen,
    dein code sollte etwa so aussehen:

    [autoit]

    ;$key defninieren
    hotkeyset($key, "keypress")
    while true
    sleep(100)
    wend
    func keypress()
    hotkeyset($key, "")
    ;key ändern
    hotkeyset($key, "keypress")
    endfunc

    [/autoit]
  • _arraydisplay zeigt jeden 2.wert an ><

    • TimBlo
    • 20. Juli 2009 um 15:22

    ich erklär dir dein skript...

    [autoit]

    $readinisection = IniReadSection("text.ini","text") ; ini lesen
    $readnumber = UBound($readinisection) ;unnötig, $inireadsection[0][0] enthält die grösse
    Global $t[$readnumber] ; macht ein array ;)
    For $i = 0 To UBound($readinisection) -1 ;macht eine schleife die bei jedem durchlauf $i um eins erhöht
    $t[$i] = IniRead("text.ini","text",$i,"") ; lest die ini nochmal?!
    $i = $i+1 ;erhöht $i nochmal um eins
    Next ;letztens wird $i zweimal erhöht und nur jeder zweite platz in $t wird belegt
    _arraydisplay[$t]; und dann kommt das zeug zum skript heraus...

    [/autoit]

    mom, ich schreibs dir mal neu

    [autoit]

    $readinisection = IniReadSection("text.ini","text")
    $readnumber = $readinisection[0][0]
    Global $t[$readnumber]
    For $i = 0 To $readinisection[0][0]
    $t[$i] = $readinisection[$i+1][1]
    Next
    _arraydisplay[$t]

    [/autoit]

    oder auch einfach

    [autoit]

    $readinisection = IniReadSection("text.ini","text")
    _arraydisplay[$readinisection]

    [/autoit]

    wäre genau so einfach ;)

  • _arraydisplay zeigt jeden 2.wert an ><

    • TimBlo
    • 20. Juli 2009 um 14:50

    haste das mit einem skript gemacht? wenn ja, zeigs mal... oder filter ainfach alles raus was die ini betrifft wens nötig ist

  • Ordner Hintergund ändern

    • TimBlo
    • 20. Juli 2009 um 14:37

    das mit dem nebeneinander oder gestreckt, im Desktop heisst das "TileWallpaper=1" für nebeneinander und "WallpaperStyle=2" für gestreckten hintergrund
    aber das gilt für den Desktop hintergrund (ich weiss das wegen meinem projekt schon auswendig)
    aber dass man den hintergrund ncih formatieren kann is halb so schlimm, schlimm is wirklich eher dass man jedes mal das tool starten muss und den pfad suchen,
    gerade so schlimm ist es dass er die bestehende Desktop.ini LÖSCHT
    ich könnte vielleicht das ganze in mein projekt einbauen und zwar so dass er den aktuellen pfad im explorer liest und dann nur zum bild auffordert... oder für den text vllt auch noch...

  • _arraydisplay zeigt jeden 2.wert an ><

    • TimBlo
    • 20. Juli 2009 um 14:21

    $readsection[0][0] enthält die anzahl ergebnisse,

    "hört mit Ubound($readsection)" wie hört das auf? "damit ist gemeint wird immer mehr" ich weiss nciht wie das geht...
    " also man kann immer was hinzufügen per skript " hmmm...

    das arraydisplay würd ich auch gerne mal sehen, und es scheint eher zu sein dass nur jeder 2te eintrag geschrieben wird :S
    auf jeden fall hast du was merkwürdiges geschaffen...

  • Sudoku Rechner

    • TimBlo
    • 19. Juli 2009 um 12:25

    moin!
    hmm, ich bin kein freund von komplizierungen, aber ich glaube nciht dass du es kompliziert machen willst, ich versteh nur nich alles und weiss nicht welchen mü-ti thread ich ansprach :D
    ausserdem geb ich mir wenig mühe mir fremdwörter erklären zu lassen und mein englisch ist erst im aufbau, deshalb "solvern"?
    und was soll ich mit bruteforce?
    sudokus kann man übrigens auch mit einem skript erstellen lassen, das verschwinden lassen der zahlen die dann der user eingeben soll kann da ein wenig komplizierter werden
    was der import von sudokustrings is weiss ich auch net
    die beste seite hab ich schon gesehen, ich hab nur nicht verstanden was daran so speziell ist (ist zwar englisch aber verstanden hab ich es eigentlich schon)

    ich les alles, also wärs praktisch wenn jemand ne erklärung schreiben würde :D
    ich freue mich schon mal daraf was neues zu wissen,
    und macht bitte schnell sonst komm ich noch auf die idee ein sudoku von der grösse 16x16 zu machen :S :rofl: ;)

  • Sudoku Rechner

    • TimBlo
    • 18. Juli 2009 um 22:28

    ja ^^ aber er ist sicher
    ich glaub ich habs gesagt, das is wegen seiner methode, manachmal bekommt er zuviele möglichkeiten
    vielleicht werd ich noch ne weitere methode einbauen,
    soll ich nen zufallsgenerator einbauen??

  • Sudoku Rechner

    • TimBlo
    • 18. Juli 2009 um 17:03

    alle sudokus natürlich! das gilt welt weit, dieses programm, wenn ich etwas baue muss es universal sein (überall passen)
    ich habs auf topster.de getestet, dort war die manipulierte highscore ^^
    und ääähm nicht falsch verstehen, die zahlen musst du selber eingeben... fürs andere müsst ich ja internet explorer verwednen -eklig

  • Sudoku Rechner

    • TimBlo
    • 18. Juli 2009 um 16:52

    Morgen alle zusammen,
    es ist mal zu einem zwischen Projekt gekommen bei mir, ich hatte langweilig - versteht sich
    ich war auf einer website und löste ein Sudoku, hatte irgendwie gerade lust...
    aber nach dem ersten Sudoku hatte ich schon keine lust mehr darauf, weil,
    die highscores manipuliert aussahen - niemand schafft so ein sudoku in 11 sek (nicht mal ein PC - der wäre schneller)
    irgendwie hatte ich gerade lust was mathematisches zu machen - dies ist zwar keine mathematik sondern logik aber das gefiel mir auch -
    und da fing ich an einen Sudoku Rechner zu bauen, hat ja nicht lange gedauert, wann hab ich angefangen? gestern um 16:16 hab ich die *.au3 erstellt (lässt sich nachweisen)
    es gibt hier zwar schon ein yut oder wie ihr das nennt, worin man so ein ding bauen sollte, aber das wusste ich nicht, ich wollte sowiso mein eigenes :)
    es dauerte gerade mal 6 stunden, und ich bin ein berner - hab mich mal wieder raus geredet, berner sind nich so langsam wie ich... ääähm ich hatts nich eilig :P

    auf jedenfall hab ichs geschafft ein fehlerfreies sudoku löse programm zu erstellen, hätte nicht gedacht dass es so einfach ist.
    dass programm prüft ständig ob das Sudoku korrekt ist (ob in zeile, spalte oder block zwei mal dieselbe zahl kommt),
    wenn ja, wird der fehler markiert mit g für block, h für zeile, v für spalte.
    wenn man aber ein sudoku korrekt ab tippt wird es nie zu einem fehler kommen.
    Fehlerferi, ist es deshalb,
    weil es sich für jedes feld, merkt welche zahlen nicht möglich sind, und wenn nur noch eine möglich ist wird sie eingetragen. (ich mache dass nciht so, aber mein programm :D )
    dadurch kann es jedoch möglich werden dass man selber mal die eine oder andere zahl tippen muss, aber es ist auch möglich dass es in weinger als 1 sek das ganze gelöst hat.
    dass keine zahl mehr möglich ist merkt er nicht, ist auch nicht nötig wenn man es korrekt verwendet.

    Skript

    Vorsicht: Werbefrei!

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region GUI
    $Form1 = GUICreate("Sudoku Rechner", 314, 264, 388, 124)
    Global $inputs[9][9] ; erstes feld = spalte ; zweites feld = zeile ;

    [/autoit] [autoit][/autoit] [autoit]

    Global $colw[9]
    $colw[0] = 8
    $colw[1] = 40
    $colw[2] = 72
    $colw[3] = 112
    $colw[4] = 144
    $colw[5] = 176
    $colw[6] = 216
    $colw[7] = 248
    $colw[8] = 280
    Global $roww[9]
    $roww[0] = 8
    $roww[1] = 32
    $roww[2] = 56
    $roww[3] = 88
    $roww[4] = 112
    $roww[5] = 136
    $roww[6] = 168
    $roww[7] = 192
    $roww[8] = 216

    [/autoit] [autoit][/autoit] [autoit]

    For $row = 0 to 8
    For $col = 0 to 8
    $inputs[$row][$col] = GUICtrlCreateInput("", $colw[$col], $roww[$row], 25, 21)
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Label1 = GUICtrlCreateLabel("Starten...", 8, 244, 204, 17)
    $Button1 = GUICtrlCreateButton("Berechnen", 216, 240, 89, 21, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion GUI

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($Label1, "Bereit")
    GUICtrlSetColor($Label1, 0x00CC00)
    Global $werte[9][9]
    Global $varriants[9][9][9]

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    For $row = 0 to 8
    For $col = 0 to 8
    $werte[$row][$col] = GUICtrlRead($inputs[$row][$col])
    Next
    Next
    $full = False
    $c_error = False
    $sp1 = 0
    $sp2 = 0
    #Region testing
    For $row = 0 to 8
    For $col = 0 to 8
    If $werte[$row][$col] <> "" Then
    For $tcol = 0 to 8
    If $werte[$row][$tcol] = $werte[$row][$col] And $col <> $tcol Then
    $c_error = True
    GUICtrlSetData($inputs[$row][$col], "h"&$werte[$row][$col])
    GUICtrlSetData($inputs[$row][$tcol], "h"&$werte[$row][$tcol])
    GUICtrlSetData($Label1, "Ihre eingaben sind Falsch!")
    GUICtrlSetColor($Label1, 0xCC0000)
    exitloop(3)
    EndIf
    Next
    EndIf
    Next
    Next
    If Not $c_error Then
    For $col = 0 to 8
    For $row = 0 to 8
    If $werte[$row][$col] <> "" Then
    For $trow = 0 to 8
    If $werte[$trow][$col] = $werte[$row][$col] And $row <> $trow Then
    $c_error = True
    GUICtrlSetData($inputs[$row][$col], "v"&$werte[$row][$col])
    GUICtrlSetData($inputs[$trow][$col], "v"&$werte[$trow][$col])
    GUICtrlSetData($Label1, "Ihre eingaben sind Falsch!")
    GUICtrlSetColor($Label1, 0xCC0000)
    exitloop(3)
    EndIf
    Next
    EndIf
    Next
    Next
    EndIf
    If Not $c_error Then
    For $sp1 = 0 to 6 Step 3
    For $sp2 = 0 to 6 Step 3
    For $row = $sp1 to $sp1+2
    For $col = $sp2 to $sp2+2
    If $werte[$row][$col] <> "" Then
    For $trow = $sp1 to $sp1+2
    For $tcol = $sp2 to $sp2+2
    If $werte[$trow][$tcol] = $werte[$row][$col] And $row <> $trow And $col <> $tcol Then
    $c_error = True
    GUICtrlSetData($inputs[$row][$col], "g"&$werte[$row][$col])
    GUICtrlSetData($inputs[$trow][$tcol], "g"&$werte[$trow][$tcol])
    GUICtrlSetData($Label1, "Ihre eingaben sind Falsch!")
    GUICtrlSetColor($Label1, 0xCC0000)
    exitloop(5)
    EndIf
    Next
    Next
    EndIf
    Next
    Next
    Next
    Next
    EndIf
    #EndRegion testing
    #Region mark
    If Not $c_error Then
    For $col = 0 to 8
    For $row = 0 to 8
    If $werte[$row][$col] <> "" Then
    GUICtrlSetStyle($inputs[$row][$col], $ES_READONLY)
    EndIf
    Next
    Next
    EndIf
    #EndRegion mark
    Do
    $full = False
    $c_error = False
    $sp1 = 0
    $sp2 = 0
    GUICtrlSetData($Label1, "Berechne...")
    GUICtrlSetColor($Label1, 0x777700)
    For $row = 0 to 8
    For $col = 0 to 8
    $werte[$row][$col] = GUICtrlRead($inputs[$row][$col])
    Next
    Next
    #Region recv data
    If Not $c_error Then
    For $row = 0 to 8
    For $col = 0 to 8
    If $werte[$row][$col] = "" Then
    For $number = 0 to 8
    $varriants[$row][$col][$number] = True
    Next
    If $row > 5 Then
    $sp1 = 6
    ElseIf $row > 2 Then
    $sp1 = 3
    Else
    $sp1 = 0
    EndIf
    If $col > 5 Then
    $sp2 = 6
    ElseIf $col > 2 Then
    $sp2 = 3
    Else
    $sp2 = 0
    EndIf
    For $number = 1 to 9
    For $trow = $sp1 to $sp1+2
    For $tcol = $sp2 to $sp2+2
    If $werte[$trow][$tcol] <> "" Then
    For $trow2 = $sp1 to $sp1+2
    For $tcol2 = $sp2 to $sp2+2
    If $werte[$trow2][$tcol2] = $number Then
    $varriants[$row][$col][$number-1] = False
    EndIf
    Next
    Next
    EndIf
    Next
    Next
    For $tcol = 0 to 8
    If $werte[$row][$tcol] = $number Then
    $varriants[$row][$col][$number-1] = False
    EndIf
    Next
    For $trow = 0 to 8
    If $werte[$trow][$col] = $number Then
    $varriants[$row][$col][$number-1] = False
    EndIf
    Next
    Next
    EndIf
    Next
    Next
    EndIf
    #EndRegion recv data
    #Region compute and fill in
    If Not $c_error Then
    $sp1 = 0
    $changes = 0
    For $row = 0 to 8
    For $col = 0 to 8
    If $werte[$row][$col] = "" Then
    $sp1 += 1
    $count = 0
    For $number = 0 To 8
    If $varriants[$row][$col][$number] = True Then
    $count += 1
    GUICtrlSetData($inputs[$row][$col], $number+1)
    $changes += 1
    EndIf
    If $count > 1 Then
    GUICtrlSetData($inputs[$row][$col], "")
    $changes -= 2
    ExitLoop
    EndIf
    Next
    EndIf
    Next
    Next
    If $sp1 = 0 Then
    $full = True
    EndIf
    EndIf
    #EndRegion compute and fill in
    For $row = 0 to 8
    For $col = 0 to 8
    $werte[$row][$col] = GUICtrlRead($inputs[$row][$col])
    Next
    Next
    #Region testing
    For $row = 0 to 8
    For $col = 0 to 8
    If $werte[$row][$col] <> "" Then
    For $tcol = 0 to 8
    If $werte[$row][$tcol] = $werte[$row][$col] And $col <> $tcol Then
    $c_error = True
    GUICtrlSetData($inputs[$row][$col], "h"&$werte[$row][$col])
    GUICtrlSetData($inputs[$row][$tcol], "h"&$werte[$row][$tcol])
    GUICtrlSetData($Label1, "Beim Brechnen sind fehler entstanden!")
    GUICtrlSetColor($Label1, 0xCC0000)
    exitloop(3)
    EndIf
    Next
    EndIf
    Next
    Next
    If Not $c_error Then
    For $col = 0 to 8
    For $row = 0 to 8
    If $werte[$row][$col] <> "" Then
    For $trow = 0 to 8
    If $werte[$trow][$col] = $werte[$row][$col] And $row <> $trow Then
    $c_error = True
    GUICtrlSetData($inputs[$row][$col], "v"&$werte[$row][$col])
    GUICtrlSetData($inputs[$trow][$col], "v"&$werte[$trow][$col])
    GUICtrlSetData($Label1, "Beim Brechnen sind fehler entstanden!")
    GUICtrlSetColor($Label1, 0xCC0000)
    exitloop(3)
    EndIf
    Next
    EndIf
    Next
    Next
    EndIf
    If Not $c_error Then
    For $sp1 = 0 to 6 Step 3
    For $sp2 = 0 to 6 Step 3
    For $row = $sp1 to $sp1+2
    For $col = $sp2 to $sp2+2
    If $werte[$row][$col] <> "" Then
    For $trow = $sp1 to $sp1+2
    For $tcol = $sp2 to $sp2+2
    If $werte[$trow][$tcol] = $werte[$row][$col] And $row <> $trow And $col <> $tcol Then
    $c_error = True
    GUICtrlSetData($inputs[$row][$col], "g"&$werte[$row][$col])
    GUICtrlSetData($inputs[$trow][$tcol], "g"&$werte[$trow][$tcol])
    GUICtrlSetData($Label1, "Beim Brechnen sind fehler entstanden!")
    GUICtrlSetColor($Label1, 0xCC0000)
    exitloop(5)
    EndIf
    Next
    Next
    EndIf
    Next
    Next
    Next
    Next
    EndIf
    #EndRegion testing
    Until $changes = 0 Or $c_error
    If $full Then
    GUICtrlSetData($Label1, "Sudoku gelöst!!")
    GUICtrlSetColor($Label1, 0x0000CC)
    ElseIf Not $c_error Then
    GUICtrlSetData($Label1, "Es sind weitere Zahlen nötig zum lösen...")
    GUICtrlSetColor($Label1, 0x770077)
    ElseIf $c_error Then
    For $col = 0 to 8
    For $row = 0 to 8
    If $werte[$row][$col] <> "" Then
    GUICtrlSetStyle($inputs[$row][$col], "")
    EndIf
    Next
    Next
    EndIf
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    achja: nochwas: ich glaube nicht dass ich noch lust hab aus eigenen gründen daran was zu ändern, wenn jemand was findet werd ich eher interesse daran haben was zu ändern

  • Sprachchat

    • TimBlo
    • 15. Juli 2009 um 14:27

    es sind doch nur logische funktionsreihen die aneinander ausgeführt werden müssen, ich denke daran, dass was mikro aufnimmt !nicht! zu speichern sondern direkt verschicken zu lassen,
    was aber kompliziert werden könnte, denn, TCP kann ja schneller als das eingeben der daten werden, man müsste wirklich bessere soundfunktionen schreiben...
    wenn ich aber daran denke dass es am anderen ende nur frequenzen in der luft geben soll, ist es einfach

  • Besonderes GUI?! :o

    • TimBlo
    • 5. Juli 2009 um 14:43

    ich habe keine Hover.au3...
    und wie meinst du das, "um diesen dann auch beim Hovern herzustellen."
    ich wollte am ende auch ein normales Bild verwenden, aber ich wollte mit Button testen...
    also wenn ich ein bild mache und Parentdrag verwende, und gleichzeitig auch noch OnEvent verwende geht das?
    ausserdem wärs praktisch wenn das bild nicht Eckig sein müsste... lassen sich GIF grafiken ohne spezielles schnik schnak anzeigen?

  • Besonderes GUI?! :o

    • TimBlo
    • 5. Juli 2009 um 13:56

    Parentdrag, Das sollte auch mit anderen GUI elementen gehn oder?
    GUICtrlCreateButton("Desktop", 0, 0, 100, 20, Default, 0x00100000) von Parentdrag merk ich darauf nicht viel ;(

  • ProjektManager

    • TimBlo
    • 4. Juli 2009 um 13:14

    Ich wollte noch einiges hinzufügen, lade dir aber trozdem mal meine neuste version hoch, vielleicht mach ich auch ne Uninstaller, das aber später...

    EDIT (HEUTE (ne spass bei seite xD 14.03 20:31): Hier ist so wies aussieht nirgends meine letzte version zu finden... und da steht nun dummerweise "zuletzt heruntergeladen: Heute"
    kann wohl eher nicht stimmen... ich hab hier nochma vorbeigeschaut weil ich ein paar funktionen für ein anderes programm suche...
    falls jemand interesse daran hätte das projekt weiter zu führen so soll er sich bei mir in ICQ oder am besten auf der AutoItBot . de seite melden...
    ich kann das gemüse aus meinen Backups laden (darum liebe ich meine externe HD :P)... ich selber werde das projekt in genau dieser art NICHT weiterführen.
    auch gerade wegen windoof 7 ist das arbeiten mit dem PC schon bequem genug als dass man es noch erleichtern könnte.... dennoch ist hier ein Projekt welches das arbeiten mit dem PC erleichtern/verschnellern soll.... es beinhaltet eine 2te Taskliste die bei XP auch gut funktioniert... (also wirklich ne taskliste nich ne sidebar) das heisst wenn man ein fenster maximiert hat, so waren doch stet beide Tasklisten sicht- und greifbar. Ich war zuletzt daran die grundfunktionen zu setzen, als ich es aufgegeben habe. wenn jemand teamwork machen will, ebenfalls melden.
    ich habe danach angefangen C++ zu lernen weil dies im endeffekt etwas übersichtlicher herauskäme (also sicher mit klassen).... im moment häng ich an nem Beat Downloader, vor und nach aber immer zeit jemandem zu helfen. ICQ: 596887000
    mfg. TimBlo

  • ProjektManager

    • TimBlo
    • 4. Juli 2009 um 12:08

    Moin!
    wenn du den hacken raus machst bei dem Windows starten dann wird der Eintrag in der registry gelöscht
    ich weiss nicht wie du es geschaft hast, dass es dann immernoch startet, wenn der hacken aber wieder drin ist, liegt ein fehler vor...

    "Danach ist mein Dekstop total beschissen mit grauen Feldern"
    vielleicht solltest du dann mal einen hintergrund definieren, das programm lädt für jeden desktop einen eigenen hintergrund.
    und zwar genau den, den du das letzte mal auf dem desktop hattest... wenn du den desktop noch nie verwendet hast, kann sowas rauskommen...
    "und ich muss das Programm schließen."
    Wenn du es schliesst wird es wieder normal?!
    wenn ja, dann funktioniert das programm! wenn es nicht funktionieren würde, dann würde es nicht mehr normal...

    Ausserdem, benuzt du es nicht unter XP ?
    zum Deeinstallieren hab ich noch nix entworfwen...
    der AutoStart sollte sich aber wirklich per mausklick entfernen lassen, und bei mir funktioniert das auch, also mach den hacken raus und schau in der regstry nach...
    und wenn der desktop grau wird, dann geh zu den einstellungs optionen des desktops und definieren einen neuen hintergrund...
    also bei XP: rechtsklick auf desktop -> einstellungen -> reiter "deskop" -> und hintergrund wählen ...

    ob es zu empfehlen ist den programm ordne zu kicken? nein eher nicht... der eintrag in der registry muss weg und im User Dir is n ordner "desktops"...

    versuch einfach nen hintergrund zu definieren. und mald dich nochma ;)

  • LPT MSR - LauflichtSteurung

    • TimBlo
    • 4. Juli 2009 um 11:23

    Also, ich hab dir eine alte UDF von mir eingebaut... die funktion gettime ist also von mir
    es ist möglich dass du etwas zeit brauchst um den Funktionsablauf zu verstehen, aber funktionieren tut es.
    du findest nun in der Einzeln() deine While schleife und darin Do-Until schleifen von mir.
    Die Do-Until schleifen laufen solange bis die gewünschte zeit abgelaufen ist.
    und bei ExitLoop ist nun eine (2) weil es nun 2 schleifen verlassen muss. (Do-Until und While)
    Ich hab noch eine kleinigkeit eingebaut damit man während dem Lauflicht noch die geschwindigkeit ändern kann...

    Neuer Code
    [autoit]

    #Include <Constants.au3>
    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $DLLFileAndPath = @ScriptDir & "/inpout32.dll"
    $PortAddress = "0x378"

    [/autoit] [autoit][/autoit] [autoit]

    Dim $on = 1, $off = 0

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\tester\Desktop\LPT MSR - Lauflicht.kxf
    $Form1 = GUICreate("LPT MSR - Lauflicht Steuerung", 354, 266, 567, 275)
    $Slider = GUICtrlCreateSlider(16, 160, 158, 45)
    $multi = GUICtrlCreateInput("10", 16, 232, 45, 21)
    GUICtrlSetCursor (-1, 5)
    $Label1 = GUICtrlCreateLabel("Geschwindigkeit", 16, 136, 82, 17)
    $Label2 = GUICtrlCreateLabel("Time Multiplikator", 16, 208, 86, 17)
    $Label3 = GUICtrlCreateLabel("Zeit/ms", 120, 208, 40, 17)
    $output_T = GUICtrlCreateInput("", 120, 232, 50, 21, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
    $Einzeln = GUICtrlCreateRadio("Einzeln", 16, 8, 113, 17)
    $Paarweise = GUICtrlCreateRadio("Paarweise", 16, 40, 113, 17)
    $Schlange = GUICtrlCreateRadio("Schlange", 16, 72, 113, 17)
    $Start = GUICtrlCreateButton("Start", 184, 232, 75, 25, 0)
    $Richtung = GUICtrlCreateCheckbox("Richtung", 16, 104, 97, 17)
    $Refresh = GUICtrlCreateButton("Refresh", 264, 232, 75, 25, 0)
    $Ausgabe = GUICtrlCreateGroup("Ausgabe", 192, 8, 137, 217)
    $B0 = GUICtrlCreateRadio("Lampe 1", 208, 32, 113, 17)
    $B1 = GUICtrlCreateRadio("Lampe 2", 208, 56, 113, 17)
    $B2 = GUICtrlCreateRadio("Lampe 3", 208, 80, 113, 17)
    $B3 = GUICtrlCreateRadio("Lampe 4", 208, 104, 113, 17)
    $B4 = GUICtrlCreateRadio("Lampe 5", 208, 128, 113, 17)
    $B5 = GUICtrlCreateRadio("Lampe 6", 208, 152, 113, 17)
    $B6 = GUICtrlCreateRadio("Lampe 7", 208, 176, 113, 17)
    $B7 = GUICtrlCreateRadio("Lampe 8", 208, 200, 113, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $Refresh
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $off, $off, $off, $off)

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Select
    Case $nMsg = $Start And BitAND(GUICtrlRead($Einzeln), $GUI_CHECKED) = $GUI_CHECKED
    einzeln()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $nMsg = $Start And BitAND(GUICtrlRead($Paarweise), $GUI_CHECKED) = $GUI_CHECKED

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $nMsg = $Start And BitAND(GUICtrlRead($Schlange), $GUI_CHECKED) = $GUI_CHECKED

    [/autoit] [autoit][/autoit] [autoit]

    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func einzeln()
    GUICtrlSetData($Start, "Stop")
    While 1
    $time_onStart = gettime()
    SetLPTPortPins($PortAddress, $on, $off, $off, $off, $off, $off, $off, $off)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time)
    SetLPTPortPins($PortAddress, $off, $on, $off, $off, $off, $off, $off, $off)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time*2)
    SetLPTPortPins($PortAddress, $off, $off, $on, $off, $off, $off, $off, $off)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time*3)
    SetLPTPortPins($PortAddress, $off, $off, $off, $on, $off, $off, $off, $off)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time*4)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $on, $off, $off, $off)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time*5)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $off, $on, $off, $off)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time*6)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $off, $off, $on, $off)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time*7)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $off, $off, $off, $on)
    Do
    Switch GUIGetMsg()
    Case $Start
    ExitLoop(2)
    EndSwitch
    $time = GUICtrlRead($Slider) * GUICtrlRead($multi)
    GUICtrlSetData($output_T, $time)
    Until gettime(1, $time_onStart, $time*8)
    WEnd
    GUICtrlSetData($Start, "Start")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;Functions -> where the action happens!
    Func SetLPTPortPins($WriteAddress, $Bit0, $Bit1, $Bit2, $Bit3, $Bit4, $Bit5, $Bit6, $Bit7)
    ;Convert bits to BCD
    $BCD = 0
    If $Bit0 = 1 Then $BCD = $BCD + 1
    If $Bit1 = 1 Then $BCD = $BCD + 2
    If $Bit2 = 1 Then $BCD = $BCD + 4
    If $Bit3 = 1 Then $BCD = $BCD + 8
    If $Bit4 = 1 Then $BCD = $BCD + 16
    If $Bit5 = 1 Then $BCD = $BCD + 32
    If $Bit6 = 1 Then $BCD = $BCD + 64
    If $Bit7 = 1 Then $BCD = $BCD + 128
    ;pass the call to inpout32.dll
    DllCall( $DLLFileAndPath, "int", "Out32", "int", $WriteAddress, "int", $BCD)
    EndFunc ;==>SetLPTPortPins

    [/autoit] [autoit][/autoit] [autoit]

    Func gettime($flag=0, $pretime=0, $newtime=0, $gettime_calculate_msec_param=0)
    If $flag == 0 Then
    Global $gettime_day = @WDAY ; MASTER don't kill
    If $gettime_day = 7 Then $gettime_day = 0
    Local $gettime_min
    Local $gettime_sec
    Local $gettime_msec
    For $it = 0 to @HOUR
    $gettime_min += 60
    Next
    $gettime_min += @MIN
    For $it = 0 to $gettime_min
    $gettime_sec += 60
    Next
    $gettime_sec += @SEC
    For $it = 0 to $gettime_sec
    $gettime_msec += 1000
    Next
    $gettime_msec += @MSEC
    Return $gettime_msec
    ElseIf $flag == 2 Then
    Local $gettime_hour
    Local $gettime_min
    Local $gettime_sec
    Local $gettime_msec
    If @WDAY == $gettime_day+1 Then
    $gettime_hour = 24
    EndIf
    $gettime_hour += @HOUR
    For $it = 0 to $gettime_hour
    $gettime_min += 60
    Next
    $gettime_min += @MIN
    For $it = 0 to $gettime_min
    $gettime_sec += 60
    Next
    $gettime_sec += @SEC
    For $it = 0 to $gettime_sec
    $gettime_msec += 1000
    Next
    $gettime_msec += @MSEC
    Return $gettime_msec
    ElseIf $flag == 1 Then
    $gettime_acttime = gettime(2)
    If $gettime_acttime >= $pretime+$newtime Then
    Return 1
    Else
    Return 0
    EndIf
    ElseIf $flag == 3 Then
    Local $gettime_calculate_sec
    Local $gettime_calculate_msec
    For $it = 1 to $pretime
    $gettime_calculate_sec += 60
    Next
    $gettime_calculate_sec += $newtime
    For $it = 1 to $gettime_calculate_sec
    $gettime_calculate_msec += 1000
    Next
    $gettime_calculate_msec += $gettime_calculate_msec_param
    Return $gettime_calculate_msec
    Else
    MsgBox(16, "STOP", "Unbekannter Aufruf in Funktion gettime Parameter 1")
    EndIf
    EndFunc

    [/autoit]


    ich hoffe ich hab dir gut geholfen... frag einfach wieder ^^

  • LPT MSR - LauflichtSteurung

    • TimBlo
    • 3. Juli 2009 um 23:27

    eben, als ich das ding zum laufen gekrigt hab, war es klar...
    schau dir mal deine funktion an, deine überlegung ist leider nicht vollständig,
    Func einzeln()
    GUICtrlSetData($Start, "Stop")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Start
    ExitLoop
    EndSwitch
    soweit so gut, aber wie gehts weiter...
    SetLPTPortPins($PortAddress, $on, $off, $off, $off, $off, $off, $off, $off)
    Sleep($time)
    SetLPTPortPins($PortAddress, $off, $on, $off, $off, $off, $off, $off, $off)
    Sleep($time)
    SetLPTPortPins($PortAddress, $off, $off, $on, $off, $off, $off, $off, $off)
    Sleep($time)
    SetLPTPortPins($PortAddress, $off, $off, $off, $on, $off, $off, $off, $off)
    Sleep($time)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $on, $off, $off, $off)
    Sleep($time)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $off, $on, $off, $off)
    Sleep($time)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $off, $off, $on, $off)
    Sleep($time)
    SetLPTPortPins($PortAddress, $off, $off, $off, $off, $off, $off, $off, $on)
    zwischen all diesen befehlen gibst du deinem Gui niemals die möglichkeit zu reagieren... (hopla)
    während jedem sleep ist das script gelähmt, zu keiner aktion fähig,
    ich kann dir vielleicht mit einer meiner alten udfs helfen, dauert aber nen bissel...

  • ProjektManager

    • TimBlo
    • 28. Juni 2009 um 21:39

    Hallo leute!!!

    ich möchte euch nun mal mein Projekt vorstellen...
    wie einige vielleicht wissen, bin ich schon seit ungefähr 60 Tagen (seit dem 17.05.2009) damit beschäftigt
    als ich einen einigermassen funktionierenden Code mit guter Ausrüstung hatte, hab ich das Gefühl bekommen,
    dass der Code zuviel Systemleistung benötigt. 8| Und ich habe von vorne angefangen... :P

    Noch was: der Code ist nicht geschüzt (open Source), ihr könnt ihn decompilieren und daran rumbauen, das macht die Sache unkompliziert und zudem könnt ihr für euch so zu sagen "ein Addon" einbauen, also z.B. einen neuen Tab machen wo ihr Einstellungen findet für spezielle Programme oder so... ihr könnt machen was ihr wollt ^^

    Wenn ich Änderungen zu Updates eingebe, werde ich sie in einer anderen Farbe eintragen, dass heisst für jedes zweite Update eine eigene Farbe, so kann man sehen was zuletzt erweitert wurde.

    Beschreibung der aktuellen Version:
    Diese schmale Vorveröffentlichung erfüllt noch nicht einmal das Ziel, welches ich erreichen wollte.
    In dieser Version sind praktisch nur die Funktionen und ne leere GUI drin, gesteuert wird im Tray.
    Die enthaltenen Grundsteine des Programmes sollen die mehrfachen Desktops eines Linuxsystemes simmulieren.
    Für jeden Desktop werden die Informationen Desktophintergrund, Offene Fenster und IconPositionen gespeichert.
    Wenn der Desktop gewechselt wird, werden die gespeicherten Daten des gewünschten Desktops geladen und angezeigt, nachdem dass die Daten des aktuellen Desktops gespeichert und ausgeblendet wurden.
    Der Hintergrund wird für jeden Desktop einzeln über den normalen Weg von Windows definiert, die attribute Zentriert Gestreckt und Nebeneinander werden auch gespeichert.
    vielleicht werd ich sogar noch ne Funktion dazu schrieben, damit nicht auf jedem Desktop dieselben Icons anzgezigt werden... 
    In der neuen Version ist was im GUI zu finden: Einstellung für den start bei Windows und Einstellung für Anzahl Desktops
    Ausserdem hab ich noch einen ekligen Bug entfernt, im ganzen soll es angenehmer sein mit dieser Version zu arbeiten.
    Die Daten werden sorgfältig gespeichert, es können keine Fehler mehr auftauchen, ich habs lange genug getestet.
    Ausserdem hab ich noch daran gearbeitet was er tut wenn Windows herunterfährt, aber davon werdet ihr vermutlich nicht viel merken.
    Ich habe noch einen kleinen Bug entfernt. Weiter sieht man oben rechts im GUI die Version.
    Im TrayMenu findet ihr nun ein Menu "Icons" wenn ihr darin auf den Eintrag "Icons neu anordnen" klickt, werden sie so wie zuletzt gespeichert angeordnet.
    Unter dem Menu findet ihr alle Desktops die beim klick darauf aufgerufen werden.
    In der neuen Version könnt ihr alles transparent machen, bei filmen ist das allerdings nicht praktisch, ich werde eine funktion einbauen die auf benutzerdefinierten desktops keine transparenz zulässt.
    Allerdings habe ich etwas bei der identifikation der Fenster geändert, was die sache sicherer macht. Ausserdem wird in der neuen Version darunter unterschieden ob der User das programm beendet, oder ob der PC ausschaltet. 
    Ihr findet nun in den Einstellungen unter Spezials die Möglichkeit zu entscheiden, ob Taskliste und Startmenu nach beenden transparent bleiben dürfen.
    In den Einstellungen ist ein Button mit der Aufschrift "Desktops ohne Transparenz wählen" beim klicken wird ein schlechtes Koda-GUI erscheinen, welches keine Funktionen erhält ausser die zu schliessen.  
    Das Wichtigste an der letzten Änderung ist, dass man per Klick entscheiden kann ob der Hintergrund für jeden Desktop wechseln soll.
    Aber auch das Programm hat ein Icon erhalten, was es etwas schöner auseshen lässt.
    Die Schlechte Koda-GUI hat nun einige Funktionen, in der linken Liste sind alle Desktops mit ihrem Status aufgelistet,
    beim klick auf einen Eintrag in dieser Liste werden dessen Eigenschaften Geladen, man kann eine Vorschau des Hintergrundes sehen, den Dateipfad, und die Ausrichtung.
    Die Ausrichtung lässt sich allerdings noch nicht ändern, nur mit dem Button "Datei suchen" kann man eine andere Hintergrunddatei wählen.
    Beachtet bitte dass man für den Hintergrund nur BMP-Bilder verwenden kann.
    Ich habe ausserdem noch eine uninstall.exe angefügt, damit ihr das Programm wieder Deinstallieren könnt.
    Ihr könnt nun einstellen dass auf einigen Desktops die Fenster keine Transparenz erhalten, was praktisch fürs spielen oder Filme schauen ist,
    dies ist im GUI für die Desktops Eigenschaften zu einstellen.

    Bedienungsanleitung der aktuellen Version:
    -Um den Desktop zu "wechseln" in das TrayIcon klicken oder im TrayMenu den gewünschten Desktop anklicken
    -Um an das TrayMenu zu gelangen mit rechter Maustaste in das TrayIcon klicken
    -Die Anzahl Desktops kann im GUI unter Einstellungen festgelegt werden
    -Die Transparenz der Taskliste, des Startmenus und von allen Fenstern kann im Gui unter Einstellungen gestezt werden, Standart is keine Transparenz
    -Damit Taskliste und Startmenu nach beenden transparent bleiben, muss man in den Einstellungen das Gutzeichen dagegen heraus nehmen.
    -Das wechseln des Hintergrundes kann in den Einstellugnen deaktiviert werden.
    -Um die Eigenschaften der Desktops zu sehen und zu Bearbeiten gibt es eine weitere GUI, die in den Einstellungen aufrufbar ist.
    -Um das Programm zu entfernen muss man in dessen Programmordner und die uninstall.exe ausführen
    -Um auf einigen Desktops den Fenstern keine Transparenz zu erlauben, muss man im Desktops GUI die entsprechende Einstellung treffen.

    Download:
    v. 0.5.2 & v. 0.5.4 & v. 0.5.5 & v. 0.5.6
    Der Download steht als Installer im Dateianhang zur verfügung.
    Es befindet sich eine RAR Datei in dem Zip Ordner ab version 0.5.5, es wird 7-zip oder WinRAR benötigt zum Entpacken!
    Gebaut für Win. XP !!

    Falls Fehler auftauchen umbedingt melden!
    Es sind mir zur Zeit keine möglichen Fehler bekannt.

  • Datei ins script kompillieren und vom laufenden script auf sich zugreifen

    • TimBlo
    • 26. Juni 2009 um 21:41

    umstand, aber ich glaube ich darf als gelöst geben....
    und tschuldigung dass ich net wusste was ich suche...
    mir wärs aber lieber wenn die datei erst nach der lizenzvereinbarung frei wäre... egal mit resHack krigt man sie sowiso
    danke für eure hilfe, ich frage gerne wieder^^

  • Datei ins script kompillieren und vom laufenden script auf sich zugreifen

    • TimBlo
    • 26. Juni 2009 um 21:33

    ich kann die fileinstall bei der exe nicht erst dann ausführen lassen wann ich es will?
    ein doofes beispiel,
    eine datei ist in eine exe konvertiert
    wenn man die exe öffnet kommt ne msgbox(4, "datei", "Datei öffnen?") also ne ja/nein frage
    ich schreibe
    if msgbox(4, "datei", "Datei öffnen?") = 6 Then
    fileinstall(bla bla...)
    endif
    wenn ich nun auf nein klicke ist msgbox = 7, wird die datei trozdem am zielpfad zu finden sein?
    immerhin hat tuttifruttis erklärung schon mal einiges klar gestellt... danke

  • Datei ins script kompillieren und vom laufenden script auf sich zugreifen

    • TimBlo
    • 26. Juni 2009 um 21:06

    jau!!! ich hab das was ich gefunden hab net versanden, eindeutig!!!
    [ offen ] FileInstall das hab ich halb durchgelesen und gedacht das hilft mir nicht...
    ausserdem, das BTW hab ich noch nie recht verstanden :D
    und mal keine sorge, die deutsche hilfe hab ich sogar lieber als die englische, ich les die sogar aber da ich net wusste was ich such...

    hab die hilfe angeschaut:
    die datei muss ja dann troz fileinstall noch nebenbei geliefert werden, und ich will die datei ja aus der exe nehmen und dann in den programm ordner kopieren
    ich kann mir darauf keine logik bauen, die datei soll includet werden und dann irgendwo hingebaut werden, dann kann ich genauso gut filemove machen!?!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™