Hallo Ynwaps,
[autoit]If Not WinExists('Rechner') or not WinExists('Unbenannt') Then MsgBox(0, 0, 'Mindestens eines der beiden ist nicht offen!')
[/autoit]Oscar , ich weiss dass deines auch funktioniert, aber warum so kompliziert?
mfg (Auto)Bert
Hallo Ynwaps,
[autoit]If Not WinExists('Rechner') or not WinExists('Unbenannt') Then MsgBox(0, 0, 'Mindestens eines der beiden ist nicht offen!')
[/autoit]Oscar , ich weiss dass deines auch funktioniert, aber warum so kompliziert?
mfg (Auto)Bert
Hallo Observer,
du schreibst:
ZitatIch habe eine Gui und habe darauf mehrere Buttons.
Jetzt brauche ich auf dieser Gui auch noch eine Buttonreihe mit 10 Buttons und 10 Labels.
poste doch einfach dein bisheriges Script, damit man sehen kann wie weit du schon bist.
ZitatAuf den Buttons reicht es wenn da der wert von 1 - 10 darauf steht und in den Labels braucht erstmal gar nichts stehen.
Wie erstelle ich diese am dümmsten und wie weise ich den Labels nacher die Werte zu ?
Die Buttons und die Labels kannst du über ein Array erstellen, mit GuiCrlSetData kannst du Labels einen Wert zuweisen. Mit IniRead kannst du Werte aus einem Ini-File lesen,
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)
Opt('MUSTDECLAREVARS' ,1)
Global $sTitel = 'Buttons from Array'
Global $hbtnIni[10], $hlblIni[10]
_Main()
Exit
Func _Main()
Local $iLeft, $iTop, $iNr
Global $hfrmMain = GUICreate($sTitel, 500, 400, -1, -1, $WS_SIZEBOX + $WS_SYSMENU +$WS_MAXIMIZEBOX +$WS_MINIMIZEBOX)
GUISetOnEvent($GUI_EVENT_CLOSE, '_exitMain')
for $iNr = 0 to 9
$hbtnIni[$iNr] = GUICtrlCreateButton("&" & $iNr,10,$iNr*30+10,45,25)
GUICtrlSetResizing($hbtnIni[$iNr], $GUI_DOCKLEFT + $GUI_DOCKTOP +$GUI_DOCKSIZE)
GUICtrlSetOnEvent($hbtnIni[$iNr], '_setLbl')
$hlblIni[$iNr] = GUICtrlCreateLabel($iNr,60,$iNr*30+15,250,25)
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP +$GUI_DOCKHeight)
Next
Local $hbtnExit = GUICtrlCreateButton("be&enden",10,330)
GUICtrlSetOnEvent(-1, '_ExitMain')
GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP +$GUI_DOCKSIZE)
GUISetState(@SW_SHOW,$hfrmMain)
While 1
Sleep(125)
WEnd
EndFunc
Func _exitMain()
Exit
EndFunc
Func _setLbl()
Local $iSchluessel
Switch @GUI_CTRLID
Case $hbtnIni[0]
GUICtrlSetData($hlblIni[0],IniRead("DeineINI", "Sektion0", "Schlüssel0", "NichtGefunden"))
Case $hbtnIni[1]
GUICtrlSetData($hlblIni[1],IniRead("DeineINI", "Sektion1", "Schlüssel1", "NichtGefunden"))
Case $hbtnIni[2]
GUICtrlSetData($hlblIni[2],IniRead("DeineINI", "Sektion2", "Schlüssel2", "NichtGefunden"))
Case $hbtnIni[3]
GUICtrlSetData($hlblIni[3],IniRead("DeineINI", "Sektion3", "Schlüssel3", "NichtGefunden"))
Case $hbtnIni[4]
GUICtrlSetData($hlblIni[4],IniRead("DeineINI", "Sektion4", "Schlüssel4", "NichtGefunden"))
Case $hbtnIni[5]
GUICtrlSetData($hlblIni[5],IniRead("DeineINI", "Sektion5", "Schlüssel5", "NichtGefunden"))
Case $hbtnIni[6]
GUICtrlSetData($hlblIni[6],IniRead("DeineINI", "Sektion6", "Schlüssel6", "NichtGefunden"))
Case $hbtnIni[7]
GUICtrlSetData($hlblIni[7],IniRead("DeineINI", "Sektion7", "Schlüssel7", "NichtGefunden"))
Case $hbtnIni[8]
GUICtrlSetData($hlblIni[8],IniRead("DeineINI", "Sektion8", "Schlüssel8", "NichtGefunden"))
Case $hbtnIni[9]
GUICtrlSetData($hlblIni[9],IniRead("DeineINI", "Sektion9", "Schlüssel9", "NichtGefunden"))
EndSwitch
EndFunc
Edit: Resizing für Labels angepasst
mfg (Auto)Bert
Hallo,
Alles anzeigenHuhu,
habe ein kleines Problem...
arbeite mich zur Zeit etwas in Autoit ein (gestern angefangen) u wollte gerade ne if schleife bauen, welche schaut, ob ein bestimmter pixel nach wie vor die richtige Farbe hat. Das ganze ist in einer while-schleife eingebettet.
Code lautet so:
Code Alles anzeigen$pixel = PixelGetColor (549, 68) $farbe = Hex($pixel, 6) if $farbe = 'CE0000' Then ToolTip('Found...',0,0) Else ToolTip('Searching ...',0,0) Send("{ESC}") sleep(400) Send("" & $makro) sleep(200) endifProblem ist, dass - auch wenn die if-Bedingung erfüllt ist - die else-Bedingung zusätzlich zur if-Bedingung ausgeführt wird...
An dem hier liegts schonmal nicht: if $farbe = 'CE0000' Then ... habe es mal in if $farbe = 0xCE0000 Then geändert, funktioniert aber auch nicht
Würde mich über Hilfe freuen,
mfg
,
das wäre die erste Variable die zu einer bestimmten Zeit 2 verschiedene Zustände haben kann,
Beweis das es nich an IF .. THEN .. ELSE.. ENDIF liegen kann:
$farbe = 'CE0000'; Hex($pixel, 6)
[/autoit] [autoit][/autoit] [autoit]if $farbe = 'CE0000' Then
MsgBox(64,"IF wird ausgeführt","")
;ToolTip('Found...',0,0)
Else
MsgBox(64,"ELSE wird ausgeführt!","")
;ToolTip('Searching ...',0,0)
;Send("{ESC}")
sleep(400)
;Send("" & $makro)
sleep(200)
endif
, um aber den Fehler analysieren zu können müsste man das ganze Skript sehen,
mfg (Auto)Bert
Hallo Jojo the big,
am besten nimmst du dafür Random z.B. so:
HotKeySet ( "{ESC}", "End" )
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
Opt( "GUIOnEventMode", 1 )
$Fenster = GUICreate ( "Koordinaten", 200, 200 )
GUICtrlCreateLabel ( "Bitte geben sie 3 Zahlenpaare ein.", 25, 15 )
$Feld1 = GUICtrlCreateInput ( "", 65, 55, 30 )
$Feld2 = GUICtrlCreateInput ( "", 100, 55 )
$Feld3 = GUICtrlCreateInput ( "", 65, 80, 30 )
$Feld4 = GUICtrlCreateInput ( "", 100, 80 )
$Feld5 = GUICtrlCreateInput ( "", 65, 105, 30 )
$Feld6 = GUICtrlCreateInput ( "", 100, 105 )
$okbutton = GUICtrlCreateButton ( "OK", 70, 160, 60 )
GUICtrlSetOnEvent($okbutton, "OKButton")
GUISetState ( @SW_Show )
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(1000)
WEnd
Func OKButton()
$1 = GUICtrlRead ( $Feld1 )
$2 = GUICtrlRead ( $Feld2 )
$3 = GUICtrlRead ( $Feld3 )
$4 = GUICtrlRead ( $Feld4 )
$5 = GUICtrlRead ( $Feld5 )
$6 = GUICtrlRead ( $Feld6 )
GUIDelete ( $Fenster )
$iWahl = Random(1,3,1)
Switch $iWahl
case 1
$sErg =$1 & " | " & $2
case 2
$sErg =$3 & " | " & $4
case 3
$sErg =$5 & " | " & $6
EndSwitch
MsgBox ( 1, "" , "Eines ihrer Zahlenpaare ist: " & $sErg)
EndFunc
Func End()
Exit
EndFunc
viel Spaß damit,
mfg (Auto)Bert
Hallo Ryu 1991,
ZitatDas mit dem ins Minus-zählen ist ärgerlich, ich dachte ich hätte das abgestellt, bei zählt er nur 2-3 sekunden ins minus und stellt dann auf kein timer aktiv. (meintest du das)
Ja, das meinte ich nu das es nicht nur 2-3 sec. sind, einmal ist er sogar wieder auf 60 gesprungen und hat von wieder von vorne angefangen,
mfg (Auto)bert
Hallo Commander21,
Aufgefallen ist mir das die SectionNames der Ini gleich dem Vornamen sind, hier wäre meines Erachtens die ID besser angebracht (Dies hat aber nur m Rande) Der Befehl GUICtrlCreateListViewItem ist richtig umgesetzt, wenn auch die Namenswahl unglücklich ist. Überhaupt wäre das Progamm leichte lesbarer wenn deine Variablen einen Bezug zur Verwendung hätten.
Ich komme mit der Bedienung oder Logik nicht zurecht, schaffe es auch nicht dass die Func _add angesprungen wird.
Da du schreibst erst zu 30% fertig zu sein wäre es mehr als eine Überlegung wert, ob du nicht gleich auf eine Dazenbank z.B. SQLite umsteigst oder wenigstens Text-Files mit "|" als Feldtrennzeichen,
mfg (Auto)Bert
Hallo
HI leute ich will etwas programmieren , was sehr verlockend ist und "eigentlich" bzw "wahrscheinlich" leicht zu programmieren ist.
Ich würde dann die ganze arbeit machen und ihr könntet dann dieses ins programm einfügen.Wenn ihr interesse habt dann schriebt mir bitte eine PN und ich erkläre euch dann was ich vorhabe.
Brauche dann unbedingt vertrauenswürdige Personen
Dieses Forum ist dazu gedacht, dass öffentlich ein Projekt erstellt wird und sich alle mit ihren Anregungen und Ideen beteiligen können. Die Aussage eigentlich impliziert bei mir immer "aber doch nicht (ganz)" und warscheinlich ist genauso vage formuliert. Wenn du einen Job zu vergeben hast, dann stell dein Angebot doch im Forum Jobbörse ein, dort gibt es auch Boardseitig den richtigen Präfix (neu|wird bearbeitet|abgeschlossen)
bernd670 ich schlage daher vor das Thema in Jobbörse zu verschieben,
mfg (Auto)Bert
Hallo
Alles anzeigenNabend zusamm. Ich hab en Problem, an dem ich nun seit 3 Stunden henge.
Ich dachte ich packs mit der Hilfe alleine, aber das wird wohl nixAlso, ich hab eine .ini namens "Database.ini".
Nun will ich diese in ein ListView eintragen.
Dabei gibts 2 Probleme:#1: Es gibt pro Sektion 9 Schlüssel. Die Anzahl der Sektionen ist variabel.
Wie lese ich nun den Wert jedes Schlüssels einer Sektion in das ListView ein?#2: Es sollen nur die ersten 5 Schlüssel/Werte eingelsen werden.
Die anderen 4 kommen wo anders hin.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Database", 642, 397, 193, 122)
GUISetBkColor(0xC0C0C0)
$ListView1 = GUICtrlCreateListView("Vorname|Nachname|Datum|Klasse|ID", 4, 4, 633, 369)
GUICtrlSendMsg(-1, 0x101E, 0, 150)
GUICtrlSendMsg(-1, 0x101E, 1, 150)
GUICtrlSendMsg(-1, 0x101E, 2, 100)
GUICtrlSendMsg(-1, 0x101E, 3, 100)
GUICtrlSendMsg(-1, 0x101E, 4, 129)
$Menu1 = GUICtrlCreateMenu("Datei")
$Menu1Item0 = GUICtrlCreateMenu ("Benutzer", $Menu1)
$Menu1Item1 = GUICtrlCreateMenuItem("Erweiterte Benutzerinformationen", $Menu1Item0)
$Menu1Item2 = GUICtrlCreateMenuItem("Termin für diesen Benutzer eintragen", $Menu1Item0)
$Menu1Item3 = GUICtrlCreateMenuItem("", $Menu1)
$Menu1Item4 = GUICtrlCreateMenuItem("Beenden", $Menu1)
$Menu2 = GUICtrlCreateMenu("Hinzufügen/Entfernen")
$Menu2Item1 = GUICtrlCreateMenuItem("Hinzufügen", $Menu2)
$Menu2Item2 = GUICtrlCreateMenuItem("Entfernen", $Menu2)
$Menu3 = GUICtrlCreateMenu("Hilfe")
$Menu3Item1 = GUICtrlCreateMenuItem("Über", $Menu3)
$Menu3Item2 = GUICtrlCreateMenuItem("Hilfe", $Menu3)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $Menu1Item4
Exit
Case $Menu2Item2
_Entfernen ()
Case $Menu2Item1
_Hinzufugen ()
Case $Menu1Item2
_Eintragen ()
EndSwitch
WEndHier mal ein Teil des Scripts.
alle anderen Funktionen sind vorerst mal nebensache.Hoffe mir kann da einer helfen
Es kommt eine GUI mit ListView und Menü, der Eit-Button und de Menüpunkt beenden funktionieren auch schon, aber wo sind die ach so nebensächlichen Zeilen in denen du die Ini einlesen willst (vorher müsstest du die Ini erst schreiben). Für Datensätze machst du es besser mit TextFiles, gibt es schon einige im Forum z.B von Oscar im Forum Skripte,
mfg (Auto)Bert
Hallo Ryu 1991;
ganz nett, aber mir sind noch einige Bugs aufgefallen:
@ChaosKeks, das Flackern kommt warscheins daher dasRyu ganz ohne sleep in seiner MsgLoop auskommt,
mfg (Auto)Bert
Hallo budweiserz,
sieh dir mal in der Hilfe StringReplace an und teste das Beispiel dazu, auch _ReplaceStringInFile könnte dir weiterhelfen,
mfg (Auto)Bert
Hallo : gmmg,
Wenn es sich nur um wenige Einträge handelt, verfahre genauso wie mir der ListBox1, es muss halt unterschiedliche Textfiles existieren, ein Teil oder der ganze Dateiname solltem dem Eintrag in der Listbox1 entsprechen. Wenn in ListBox1 ein Eintrag ausgewählt wird, löcht du zuerst alle Einträge in ListBo2 und füllst sie dann mit den Werten des Textfiles.
Bei größeren Datenmengen solltest du dir überlegen, das ganze (auch die Daten für die ListBox1) in einer Datenbank abzulegen und von dort aus die ListBoxen befüllen,
mfg (Auto)Bert
Hallo subzero007,
wenn ich dich richtig verstanden habe hast du 2 Skripte (mit je 1 GUI) und du willst aus jedem Skript bestimmte Funktionen übernehmen. Am Schluss hättest du gerne eine GUI mit den Funktionen von beiden. Da beide in unterschiedlichen MODI geschrieben sind:
Beide Modi kannst du aber nicht zusammen in einer GUI verwenden. Lies dazu bitte in der Hilfe unter GUI-Referenz die Themen:
nach. Danach entscheidest du in welchem Modus du deine GUI erstellen möchtest und schreibst danach das andere Skript auf den Modus für den du dich entschieden hast um und testet es aus. Wenn alles funktioniert implementierst du die gewünschten Funktion(en) in deinem Skript.
Da deine GUI auch in der Größe änderbar sein soll musst du falls du eine neuere Version von Chaos-Execution nimmst die Func MY_WM_GETMINMAXINFO anpassen, da in ihr die Mindest- und Maximalgröße der GUI beschränkt werden. Auch solltest du dann die GUI mit nur mit diesen Stil $WS_SIZEBOX erstellen und auf die Stile $WS_MINIMIZEBOX und $WS_MAXIMIZEBOX unbedingt verzichten.
mfg (Auto)Bert
Hallo Oscar ,
bei der von mir geposteten letzten Version wr definitiv ein von mir programmierter Bug drinnen. Beim Versuch des Korrigierens bin ich allerdings verzweifelt, ich konnte die eingebaue Sortierung an die meines Erachtens richtige Stelle setzen, aber es kam trotzdem das gleiche Ergebnis. Ich bin froh dass du eine Lösung gefunden hast, dann kann ich ja aufhören zu suchen,
mfg (Auto)Bert
Hallo bitworker,
Zitathabe deinen Ratschlag befolgt und es funktioniert soweit aber kann ich mit AutoIt immer nur am Ende einer Textdatei schreiben
Wenn du beim Öffnen vor dem Screiben den Modus 2 nimmst wird die Datei automatisch neu erstellt und nicht hinten angehängt.
Zitatviel besser wäre nur bestimmte Zeichen folgen zu ersetzten die in einer bestimmten Zeile stehen . FileRead ohne Angaben liest glaub ich immer die ganze Datei oder irre ich mich ?
Wenn du an Stelle von FileRead _FileReadToArray nimmst, kannst du Zeile für Zeile in dem Array bearbeiten, Achtung Array[0] beinhaltet die Anzahl der Zeilen.Mit _FileWriteToArray kannst du dann das ganze Array in eine Datei schreiben, Achtung Array[0] darf nicht mitweggeschrieben werden.
mit FileRead hast du recht es liest die ganze Datei ein wenn keine Zeile angegeben ist.
Zitatgibt es eine Möglichkeit den Quellcode zu optimieren oder anderst zu schreiben ?
Du kannst auch _ReplaceStringInFile verwenden um entweder das erste Vorkommen oder alle Vorkommen des Suchstrings zu ersetzen.
mfg (Auto)Bert
Hallo,
mir fehlt da spontan ein, da möchte einer Captchas knacken,
mfg (Auto)Bert
Hallo Korby,
Warum versuchst du es nicht über @DeskTopWidth bzw. @DeskTopHeight?
mfg (Auto)Bert
Hallo eF_Hacks,
wenn du dein Skriptstand postest findest du leichter Hilfe, oder sollen wir raten wo der Fehler liegt. Meine Glaskugel sagt mir zwar, dass der Fehler in der Erstellung der Tabs liegt, bzw. du rmchart an der falschen (nämlich für die ganze Gui) erzeugst,
mfg (Auto)Bert
Hallo Lenny,
tut mir leid, dass ich dir die Freude an der Sortierung vermiesen muss, aber die Routine klappt nur in der ersten Ebene korrekt, danach geht die Sortierung daneben,
ZitatZitat von Oscar in #8 :Man müsste also die "1. Ebene" einlesen, sortieren, ins TreeView eintragen und dann erst die Child-Items erstellen.
das ist eine Möglichkeit bzw. wenn auf ein Child-Item klickt, wieder nur die Childs der 1. Ebene erstellen und sortieren
mfg (Auto)Bert
Hallo Mehmex,
probiers doch so:
[autoit]Func _print()
Local $printfile = @TempDir & "\temp_printfile.rtf"
_GuiCtrlRichEdit_StreamToFile($edit, $printfile)
ShellExecute($printfile, "", "", "print", @SW_HIDE )
FileDelete($printfile)
EndFunc
Habe es selbst noch nicht getestet, müsste aber laut Hilfe so klappen,
mfg (Auto)Bert
Hallo Ryu 1991,
[autoit] ZitatOk, das gepostete Script läuft auch bei mir schnelle, ich habe keine Änderung zu meinem Entdeckt außer der While schleife (war das alles?).
While ($count < $time * 100000) ;könnte zu Überlauf führen
Sleep($Time )
so hatte ich abgeändert, damit es wenigstens mit kleinen Minutenweren geht, die Variable $count darf nicht größer als 2^32 (vielleicht auch 2^64, dann wäre alles klar) werden also länger als ca. 42.000 Minuten in die Zukunft darfst du den Timer nicht stellen, trotzdem bin ich immer noch der Meinung, dass der sleep zu ungenau ist (gibts auch irgenwo im Forum Hilfe schon mal ein Thead)
ZitatIch habe das sleep jetzt ganz raus gemacht, da auch ohne sleep immer noch CPU Auslastung 0 ist
und wie berechnest du jetzt den Fortschritt?
mfg (Auto)Bert