Du verwendest in der Func _Save() die Variable $i, obwohl diese dort nicht definiert ist.
In deiner While-Schleife hast du For $i = 0 To 13, das $i ist aber eine lokale Variable innerhalb der For-Schleife.
Ausserdem fragst du einmal nach CHECKED und anschließend extra nach UNCHECKED - das ist natürlich überflüssig, denn wenn CHECKED nicht zutrifft, kann es ja nur UNCHECKED sein, also einfach einen ELSE-Zweig verwenden. ![]()
Beiträge von BugFix
-
-
Da steht ja aber auch ganz schöner Schwachsinn drin.
Schaut euch mal die AutoIt-"Lösung" hier an: 2D-Array zur Laufzeit erstellen
Das muss jemand geschrieben haben, der noch nie was mit AutoIt zu tun hatte.
Edit: Habe jetzt mal ein sinniges Bsp. dort erstellt. Da rollen sich einem ja sonst die Fußnägel auf.

-
Hast du ne Ahnung, wie ich das richtige Syntax-Highlighting für Autoit bekomme?
Du meinst sicher das alte Farbschema in SciTE.
- SciTE öffnen
- Strg+1
- öffnet Scite Config
- Tab: Color Settings
- Button: New Scheme
- Auswahl: OldSciTE4AutoIt3
- Button: Save+Apply -
Aber wenn man halt kleine Spiele oder sonstwas macht, für 2-5 Euro, wer wird da bitte so einen Aufwand auf sich nehmen, einen passenden Deobfuscator proggen, diesen Serial-Schutz aushebeln, etc...
Gerade dafür ist es unsinnig. Wenn du den Programmieraufwand für die Sicherheitsroutinen dann auf 30..40% des Gesamtprogrammes anwachsen lassen musst, kümmerst du dich ja bald mehr um Sicherungsroutinen als um die Programmabläufe.
Ich bin Verfechter von Opensource und absoluter Gegner von Software-Patenten.
Wir wollen doch mit den kleinen Tools (die du im Bereich 2 bis 5 € ansiedelst) kein Geld verdienen, sondern eine Bestätigung und Anerkennung unserer Arbeit erhalten. Dafür lässt sich aber auch das Donate-System verwenden. Wenn ich freie Software nutze und mir gefällt diese, bin ich auch gerne bereit dem Autor eine Vergütung nach eigenem Ermessen zukommen zu lassen. Aber auch die recht weit verbreitete Postkarten-Honorierung finde ich nicht schlecht. Wenn dich Postkarten aus der ganzen Welt erreichen, weil diese Menschen dein Tool genutzt und für gut befunden haben, ist das doch eine viel schönere Bestätigung als irgendwelcher schnöder Mammon.
-
-
Wenn auf eine Variable ein Punkt folgt ist das für den Lexxer die Anweisung, weiteren Text blau darzustellen. Wie in den vorigen Posts schon gesagt wurde, ist das im Zusammenhang mit Objektvariablen, wobei natürlich keine automatische Prüfung auf Objekt oder nicht geschieht.

-
Und wieso sollte eine Lizenzierung unter AutoIT sinnfrei sein?
Lizensierung macht Sinn für Programme, die mit hohem Aufwand erstellt, kostenpflichtig vertrieben werden. - Kann man mit AutoIt machen.
Aber:
Jedes AutoIt-Skript kann ohne großen Aufwand aus der EXE dekompiliert/deobfuskated werden. Wer das will - der tuts und schert sich wenig drum, ob das erlaubt ist oder nicht. Und dann wird einfach die Lizenzabfrage aus dem Code gestrichen und das System ist hinfällig. -
-
Mir entgeht trotzdem der Sinn. Was soll so etwas in Verbindung mit AutoIt - da ist doch jede Lizensierung sinnfrei.
-
-
Damit sollte erst mal genug getan sein. Ich befürchte hier geht es um etwas völlig anderes. Falls nicht ist ja eine Lösung vorhanden.
[CLOSED]
-
Erlaubt die Website überhaupt das automatisierte Abfragen von Informationen? (AGB anschauen) - Wenn nicht, ist dein Ansinnen ein Verstoß gegen unsere Forenregeln.
-
volle
Dll-Injection?! - Du solltest dir dringend unsere Forenregeln durchlesen. Für so etwas gibt es hier keine Unterstützung.
-
Wenn ich in der Dll per Print etwas ausgebe erscheint das automatisch in SciTE in der Konsole.
Ja, weil du die Dll im AutoIt-Skript aufrufst und die Ausgaben der Dll somit in der SciTE-Konsole aufgefangen werden.
Das ist natürlich sehr brauchhbar um Fehler zu suchen.
-
da autoit keine Rename funktion hat
[autoit]
...verwendet man einfachFileMove
[/autoit]
-
FreeBasic läßt sich auch rudimentär in SciTE einbinden.
(Autovervollständigung, Befehlsliste etc. sind hier noch nicht dabei - mache ich evtl. später mal)Man muß etwas umbauen aber das ist nicht so wild:Basierend auf der beschriebenen Installation von FreeBasic und FbEdit und den empfohlenen Hilfe-Dateien habe ich jetzt mal die Integration in SciTE erweitert. Alle API's sind erfasst und somit funktioniert auch die Autovervollständigung.
Folgende Kommentare beseitigen (# am Zeilenanfang entfernen)
In der Datei "..\AutoIt3\SciTE\SciTEGlobal.properties"ca. Zeile 520:
ca. Zeile 615:Ersetzt die Datei "..\AutoIt3\SciTE\properties\freebasic.properties" mit der folgenden Version und speichert die Run_FB.au3 u. Help_FB.au3 ab (Pfade in #3 und #4 anpassen). Die Help_FB.au3 ermöglicht die gewohnte Kontext-sensitive Hilfe (Cursor auf Befehl - F1 - zugehöriger Part wird in Hilfedatei geöffnet).
freebasic.properties
Code
Alles anzeigen# Define SciTE settings for FreeBasic files. file.patterns.freebasic=*.bas;*.bi filter.freebasic=FreeBasic (bb bi)|$(file.patterns.freebasic)| lexer.$(file.patterns.freebasic)=freebasic #Comments functions definition comment.block.freebasic=' # keywords must be all lowercase keywordclass.freebasic=\ append as asc asin asm atan2 atn beep bin binary bit bitreset bitset bload \ bsave byref byte byval call callocate case cbyte cdbl cdecl chain chdir chr \ cint circle clear clng clngint close cls color command common cons const \ continue cos cshort csign csng csrlin cubyte cuint culngint cunsg curdir \ cushort custom cvd cvi cvl cvlongint cvs cvshort data date deallocate declare \ defbyte defdbl defined defint deflng deflngint defshort defsng defstr defubyte \ defuint defulngint defushort dim dir do double draw dylibload dylibsymbol else \ elseif end enum environ environ$ eof eqv erase err error exec exepath exit exp \ export extern field fix flip for fre freefile function get getjoystick getkey \ getmouse gosub goto hex hibyte hiword if iif imagecreate imagedestroy imp \ inkey inp input instr int integer is kill lbound lcase left len let lib line \ lobyte loc local locate lock lof log long longint loop loword lset ltrim \ mid mkd mkdir mki mkl mklongint mks mkshort mod multikey mutexcreate \ mutexdestroy mutexlock mutexunlock name next not oct on once open option or out \ output overload paint palette pascal pcopy peek peeki peeks pipe pmap point \ pointer poke pokei pokes pos preserve preset print private procptr pset ptr \ public put random randomize read reallocate redim rem reset restore resume \ resume next return rgb rgba right rmdir rnd rset rtrim run sadd screen \ screencopy screeninfo screenlock screenptr screenres screenset screensync \ screenunlock seek statement seek function selectcase setdate setenviron \ setmouse settime sgn shared shell shl short shr sin single sizeof sleep space \ spc sqr static stdcall step stop str string string strptr sub swap system tab \ tan then threadcreate threadwait time time timer to trans trim type ubound \ ubyte ucase uinteger ulongint union unlock unsigned until ushort using va_arg \ va_first va_next val val64 valint varptr view viewprint wait wend while width \ window windowtitle with write xor zstring keywordclass.preprocessor=\ #define #dynamic #else #endif #error #if #ifdef #ifndef #inclib #include \ #print #static #undef keywords.$(file.patterns.freebasic)=$(keywordclass.freebasic) keywords2.$(file.patterns.freebasic)=$(keywordclass.preprocessor) # FB styles # Default style.freebasic.0=fore:#000000 # Comment style.freebasic.1=$(colour.code.comment.line),$(font.code.comment.line) # Number style.freebasic.2=$(colour.number) # Keyword1 style.freebasic.3=$(colour.keyword),bold # String style.freebasic.4=$(colour.string) # Preprocessor style.freebasic.5=$(colour.preproc) # Operator style.freebasic.6=$(colour.operator) # Identifier style.freebasic.7=$(style.freebasic.0) # Date # style.freebasic.8=$(colour.error) # StringEOL # style.freebasic.9=$(colour.error) # Keyword2 style.freebasic.10=$(colour.keyword) # Keyword3 style.freebasic.11=$(colour.keyword) # Keyword4 style.freebasic.12=$(colour.keyword) # Constant # style.freebasic.13=$(colour.error) # Asm # style.freebasic.14=$(colour.error) # Label style.freebasic.15=$(colour.preproc) # Error style.freebasic.16=$(colour.error) # HexNumber style.freebasic.17=$(colour.number) # BinNumber style.freebasic.18=$(colour.number) #Pathes # Hier ggf. den Programmpfad des PC anpassen - KEINE Anführungszeichen verwenden! : path.programs=C:\Program Files (x86) fb.exe=$(path.programs)\FreeBASIC\fbc.exe # Pfade der FbEdit-Installation, alle Hilfedateien im Pfad: \FbEdit\Help\ fb.api=$(path.programs)\FreeBASIC\FbEdit\Api fb.help.dir=$(path.programs)\FreeBASIC\FbEdit\Help fb.help=$(fb.help.dir)\FB.chm win32.help=$(fb.help.dir)\win32.hlp win.styles.help=$(fb.help.dir)\Windows_styles.chm # Autocomplete and call tip settings # Das sind die API-Dateien, die in der FbEdit-Installation enthalten sind api.*.bas=\ $(fb.api)\fbCall.api;$(fb.api)\gdipCall.api;$(fb.api)\oglCall.api;$(fb.api)\winCall.api;$(fb.api)\wxCall.api$(fb.api)\svCall.api;$(fb.api)\fmodCall.api;\ $(fb.api)\fbConst.api;$(fb.api)\oglConst.api;$(fb.api)\winConst.api;$(fb.api)\svConst.api;$(fb.api)\raeConst.api;$(fb.api)\rapConst.api;$(fb.api)\raccConst.api;$(fb.api)\rafConst.api;$(fb.api)\rahConst.api;$(fb.api)\ragConst.api;$(fb.api)\rarConst.api;$(fb.api)\sprConst.api;\ $(fb.api)\fbStruct.api;$(fb.api)\gdipStruct.api;$(fb.api)\winStruct.api;$(fb.api)\fmodStruct.api;$(fb.api)\raeStruct.api;$(fb.api)\rapStruct.api;$(fb.api)\raccStruct.api;$(fb.api)\rafStruct.api;$(fb.api)\rahStruct.api;$(fb.api)\ragStruct.api;$(fb.api)\rarStruct.api;$(fb.api)\sprStruct.api;\ $(fb.api)\fbWord.api;$(fb.api)\winWord.api;$(fb.api)\fmodWord.api;$(fb.api)\raeWord.api;$(fb.api)\rapWord.api;$(fb.api)\raccWord.api;$(fb.api)\rafWord.api;$(fb.api)\rahWord.api;$(fb.api)\ragWord.api;$(fb.api)\rarWord.api;$(fb.api)\sprWord.api;\ $(fb.api)\fbType.api;$(fb.api)\oglType.api;$(fb.api)\winType.api;\ $(fb.api)\fbCase.api;\ $(fb.api)\fbDesc.api;$(fb.api)\winDesc.api;\ $(fb.api)\winMsg.api;$(fb.api)\raeMsg.api;$(fb.api)\rapMsg.api;$(fb.api)\raccMsg.api;$(fb.api)\rafMsg.api;$(fb.api)\rahMsg.api;$(fb.api)\ragMsg.api;$(fb.api)\rarMsg.api;$(fb.api)\sprMsg.api;\ $(fb.api)\fmodEnum.api;$(fb.api)\raeEnum.api;$(fb.api)\rapEnum.api calltip.freebasic.word.characters=$(chars.alpha)$(chars.numeric)_ calltip.freebasic.ignorecase=1 calltip.freebasic.end.definition=) calltip.freebasic.parameters.separators=, autocomplete.freebasic.ignorecase=1 autocomplete.freebasic.start.characters=$(chars.alpha)$(chars.numeric)$_@# word.characters.$(keywordclass.freebasic)=$(chars.alpha)$(chars.numeric)$(chars.accented).$_@# #1 Kompiliere Konsolenanwendung command.name.1.*.bas=Compile Console FB command.1.*.bas="$(fb.exe)" -s console "$(FileNameExt)" command.save.before.1.*.bas=1 command.shortcut.1.*.bas=Ctrl+F7 #2 Kompiliere Dll command.name.2.*.bas=Compile Dll FB command.2.*.bas="$(fb.exe)" -s gui -dll -export "$(FileNameExt)" command.save.before.2.*.bas=1 command.shortcut.2.*.bas=Shift+F7 #3 Ausführen einer kompilierten Datei command.name.3.*.bas=Run FB command.3.*.bas="$(autoit3dir)\autoit3.exe" "C:\Code_AutoIt\Run_FB.au3" "$(FilePath)" command.save.before.3.*.bas=1 command.shortcut.3.*.bas=F5 #4 Hilfe FreeBasic command.name.4.*.bas=Hilfe __ FB command.4.*.bas="$(autoit3dir)\autoit3.exe" "C:\Code_AutoIt\Help_FB.au3" "$(fb.help)" $(CurrentWord) command.save.before.4.*.bas=1 command.subsystem.4.*.bas=2 command.shortcut.4.*.bas=F1 #5 Hilfe Win32 command.name.5.*.bas=Hilfe __ Win32 command.5.*.bas="$(win32.help)" command.subsystem.5.*.bas=2 command.shortcut.5.*.bas=Shift+F1 #6 Hilfe Win Styles command.name.6.*.bas=Hilfe __ Win Styles command.6.*.bas="$(win.styles.help)" command.subsystem.6.*.bas=2 command.shortcut.6.*.bas=Ctrl+F1
Die Pfade im Bereich #Pathes (path.programs, Run_FB.au3 u. Help_FB.au3) ggf. anpassen."Run" kann nur ausgeführt werden, wenn vorher das Skript kompiliert wurde. (Ihr erhaltet eine Fehlermeldung, wenn kein kompiliertes Skript vorliegt.)
Um Code zu testen macht es sich ganz gut, diesen als Konsolenanwendung zu erstellen und Testwerte mit "Print" auszugeben. Aber auf jeden Fall am Ende ein "Sleep" ohne weitere Parameter setzen. Dann bleibt die Konsole bis zum Betätigen einer Taste geöffnet und somit kann man auch die Ausgaben lesen. Dran denken: Nach jeder Änderung erst kompilieren, dann ausführen.
Vermutlich läßt sich auch die Ausgabe in die SciTE-Konsole übergeben, aber das habe ich noch nicht probiert und da es so funktioniert sehe ich das auch nicht als essentiell an.
-
Du kannst von dem Webding-Symbol ein Image erstellen und dieses per Imagelist bereitstellen. Dazu sind aber die Funktionen der Listview-UDF zu nutzen.
Aber auch hier gilt: Das Symbol landet in der ersten Spalte!
Von der Einfachheit der Auswertung würde ich aber eindeutig die Checkboxen vorziehen.Ich weiß nicht, was dich daran stört, dass die "Erledigt"-Info in Spalte 1 ist. Eigentlich ist dieses doch die höchste Priorität (erledigt oder offen), also ist es doch sinnvoll diese Info in der ersten Spalte zu sehen.
Vielleicht solltest du dein Konzept überdenken und mit (relativ) einfachen Mitteln einen funktionierenden Code erstellen, als auf einem Konzept zu beharren, das dir nur unendlich viele Probleme aufhalst.
-
WARUM schaust du nicht mein Skript an?!
Die Hintergrundgrafik muss Disable gesetzt werden. Und wenn du ein Bild auf dem Button möchtest, dann mach es doch einfach GENAU SO, wie in meinem Bsp.. :wacko:
-
Alternativ ist auch eine Reperaturinstallation möglich (zumindest bis XP war das eine Option). Details dazu kannst du ergoogeln. Funktioniert hervorragend (bei M$ ja nicht zwingend zu erwarten :D) und alle vorher installierten Programme sind auch noch installiert.
-
Ja das ist genau was ich versucht habe...aber bei mir ging es auf diese Art nicht ö.Ö
Wie schon gesagt: Auf diese Art und Weise sollst du es ja keinesfalls tun. Erst alle GUI erstellen.
Hier ein Bsp.:Spoiler anzeigen
[autoit]Local $gui1, $gui2, $gui3, $gui4, $gui5, $btn1_1, $btn1_2, $btn1_3, $btn1_4, $btn2, $btn3, $btn4, $btn5, $msg
[/autoit] [autoit][/autoit] [autoit]$gui1 = GUICreate('GUI 1')
[/autoit] [autoit][/autoit] [autoit]
$btn1_1 = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)
$btn1_2 = GUICtrlCreateButton('Zeige GUI 3', 10, 50, 100, 20)
$btn1_3 = GUICtrlCreateButton('Zeige GUI 4', 10, 80, 100, 20)
$btn1_4 = GUICtrlCreateButton('Zeige GUI 5', 10, 110, 100, 20)$gui2 = GUICreate('GUI 2')
[/autoit] [autoit][/autoit] [autoit]
$btn2 = GUICtrlCreateButton('Button 2', 10, 20, 100, 20)$gui3 = GUICreate('GUI 3')
[/autoit] [autoit][/autoit] [autoit]
$btn3 = GUICtrlCreateButton('Button 3', 10, 20, 100, 20)$gui4 = GUICreate('GUI 4')
[/autoit] [autoit][/autoit] [autoit]
$btn4 = GUICtrlCreateButton('Button 4', 10, 20, 100, 20)$gui5 = GUICreate('GUI 5')
[/autoit] [autoit][/autoit] [autoit]
$btn5 = GUICtrlCreateButton('Button 5', 10, 20, 100, 20)GUISetState(@SW_SHOW, $gui1)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg(1)
Switch $msg[1] ; Window Handle
Case $gui1
Switch $msg[0] ; Event
Case $GUI_EVENT_CLOSE
ExitLoop
Case $btn1_1
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui2)
Case $btn1_2
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui3)
Case $btn1_3
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui4)
Case $btn1_4
GUISetState(@SW_HIDE, $gui1)
GUISetState(@SW_SHOW, $gui5)
EndSwitch
Case $gui2
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui2)
Case $btn2
MsgBox(0, '', 'Button 2 geklickt')
EndSwitch
Case $gui3
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui3)
Case $btn3
MsgBox(0, '', 'Button 3 geklickt')
EndSwitch
Case $gui4
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui4)
Case $btn4
MsgBox(0, '', 'Button 4 geklickt')
EndSwitch
Case $gui5
Switch $msg[0]
Case $GUI_EVENT_CLOSE
GUISetState(@SW_SHOW, $gui1)
GUISetState(@SW_HIDE, $gui5)
Case $btn5
MsgBox(0, '', 'Button 5 geklickt')
EndSwitch
EndSwitch
WEndGUIDelete($gui1)
[/autoit]
GUIDelete($gui2)
GUIDelete($gui3)
GUIDelete($gui4)
GUIDelete($gui5) -
Wo und wie rufe ich denn nun die eigentliche Druckerinstallation auf
Schau doch einfach mein Bsp. an. $button ist ein Button mit dem Druckersymbol, du brauchst also nur den Button auswerten. -
Ein Tipp:
- alle GUI am Anfang erstellen
- bei Bedarf mit GuiSetState @SW_SHOW / @SW_HIDE ein-/ausblendenZu deinem Problem:
Es sieht so aus, als ob die Bedingung für den Aufruf der Funktion schon beim Start zutrifft. Hast du das mal überprüft? (Ausgabe der Koordinaten in die Konsole zum Direktabgleich)
Mir scheint aber auch, dass du völlig falsche Koordinaten abgleichst. Was dort für den bereich, über dem sich die Maus befinden soll, angegeben ist macht irgendwie nicht recht Sinn. -
Mach dir ein Bild als Hintergrund (hier im Bsp den Pfad eintragen), Größe anpassen und setze noch mehr der Button:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <ButtonConstants.au3>$pathPict = "Hintergrundbild" ; 640x480
[/autoit][autoit][/autoit][autoit]$gui = GUICreate('Test', 640, 480)
[/autoit][autoit][/autoit][autoit]
$pic = GUICtrlCreatePic($pathPict, 0, 0, 640, 480)
GUICtrlSetState(-1, $GUI_DISABLE)$button = GUICtrlCreateButton('', 20, 20, 40, 40, $BS_ICON)
[/autoit][autoit][/autoit][autoit]
GUICtrlSetImage(-1, "shell32.dll", 17)GUISetState()
[/autoit][autoit][/autoit][autoit][/autoit][autoit]While 1
[/autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $button
ConsoleWrite('KLICK' & @CRLF)
EndSwitch
WEnd