super, danke dir, dass rettet mir den tag
Beiträge von ManuelB.95
-
-
1. Warum soll denn der User den Pfad zur INI setzen? Warum machst DU das nicht selbst?
Wenn du den Pfad selbst bestimmst, dann wird das Programm IMMER diesen Pfad wählen, selbst beim 1000. Start.2. Wenn du dir den IniRead Befehl in der Hilfe mal näher anschaust, wird dir auffallen, dass du einen "Standardwert" setzen kannst, der automatisch genutzt wird, sollte das IniRead fehlschlagen.
kann ich dir sagen und zwar schreibe ich eine art relog bot. damit wenn das programm ausgeführt wird der nutze selber den speicherort der datei wählen kann (da ich ja nicht weiß was er für ein betriebssystem hat) möchte ich, dass der nutzer den pfad auswählt (denn wenn ich default zu zB C:\\USER\\Manuel\Desktop oÄ setzten würde der nutzer aber Peter als Nick hätte, funktioniert das ganze nicht mehr.. kannst du mir folgen?
-
richtig. doch mir ist der bekannt und den habe ich ja beim ersten "starten" des programms deklariert. nur wie bekomme ich es hin, dass das programm diesen pfad beim 2 oder 3 starten nimmt und die dort in einer ini datei abgelegten variablen liest?
-
hi! ich bin seit tagen schon an dem problem am tüfteln und komme zu keinem ergebnis. ich könnte so langsam ausrasten :S. und zwar möchte ich, dass mein programm variablen und strings speichert. wenn ich das programm dann ein zweites mal ausführe möchte ich, dass das programm automatisch die vorherig gespeicherten strings und variablen wieder läd aber wie setzt ich das um? mit iniread und iniwrite stoße ich immer wieder an grenzen, hier ein beispiel: die variable §path_selected wird am anfang des programms als 0 deklariert. sobald der nutzer den pfad vonder user_settings.ini gesetzt hat wird die variable global zu 1 gesetzt. beim nächsten starten aber wenn ich per iniread sage: $path_selected = Iniread($path_direction, "main", $path_selected, "") motzt das programm wieder rum, dass er die variable $path_direction nicht mehr kenne. und ich würde ungern den nutzer jedes mal die variable $path_direction deklarieren lassen.. gibt es eine elegantere lösung?
-
Ausserdem hab ich dir weiter oben geschrieben du mögest die Hilfe lesen... scheinbar machst du es nicht...
habs.. danke doch ich lese sehr viel die hilfen von autoit, da ich autoit aber erst seit knapp 4 tagen nur ein paar stunden am tag nutze und keinerlei vorkenntnisse vom programmieren habe helfen mir texte sehr wenig (zB verstehe ich bis jetzt noch nicht was genau ein array ist und was er bewirkt..) ich versuche viel durch lesen zu verstehen und außerdem hätte ich viel lieber, dass wenn mir jemand hilft (wie zB bugfix), dass man den code den man mir schickt erklärt, damit ich es verstehe und ein grundverständnis dieser sprache bekomme :p deswegen danke dir und auch danke nochmal an die anderen
-
Und Btw, es bringt nichts wenn du einen Codeschnipsel postest, da kann keiner was mit anfangen...
oh okay.. dachte es bringt in sofern was, da es ja nur um die schleife geht die "checkt" welches fenster gerade "benutzt" wird.. wenn du mehr brauchst sag mir das bitte
-
ok hier ist die schleife, wo ich das ganze abfragen wollte
AutoIt
Alles anzeigenWhile 1 $nMsg = GUIGetMsg() Switch $nMsg Case $mu_online_reconnect_main Switch $nMsg() Case $GUI_EVENT_CLOSE Exit Case $slot_1 _slot_1check() Case $slot_2 _slot_2check() Case $slot_3 _slot_3check() Case $slot_4 _slot_4check() Case $slot_5 _slot_5check() Case $slot_6 _slot_6check() Case $slot_7 _slot_7check() Case $slot_8 _slot_8check() Case $options GUISetState(@SW_SHOW, $mu_online_reconnect_options) EndSwitch Case $mu_online_reconnect_options Switch $nMsg() Case $GUI_EVENT_CLOSE GUISetState(@SW_SHOW, $mu_online_reconnect_main) GUISetState(@SW_HIDE, $mu_online_reconnect_options) Endswitch EndSwitch WEnd
-
Das hat dir @BugFix bereits gezeigt, in einem anderen Thread:
Case ProblemSchau dir mal die Zeilen 12 bis 30 genauer an.
hast du den threat weiter verfolgt? ich habe es in meinen code eingebunden und es funktioniert nicht, deswegen erbitte ich weitere hilfe bzw mir sagen was ich in meinem skriptabschnitt den ich gezeigt habe, falsch gemacht habe
-
hi! ich würde gerne, wenn ich auf "X" (-3) drücke, dass zuvor mit einem butten geöffnete gui "optionen" schließen und nicht das ganze programm schließen. hat einer eine schnelle lösung? (ich möchte aber trotzdem das programm beenden wenn ich in dem hauptfenster auf X drücke)
danke ihr lieben :p
lg -
Dein Skript ist nicht ausführbar:
natürlich ist es nicht ausführbar, ich habe ja auch nur den "schnipsel" von der schleife gepostet und nicht das ganze skript
-
hehe ja :p, problem solved, also danke dir muss dich aber nochmal bezüglich folgendes fragen (wenn ich ein zweites fenster habe, dass ich schließen möchte und zum hauptfenster zurückgelagen möchte. ich habe mal versucht deine methode anzuwenden, komme aber nicht weiter, hier dein beispiel:
AutoIt
Alles anzeigen#include<GUIConstantsEx.au3> Local $gui1, $gui2, $btn1, $btn2, $msg $gui1 = GUICreate('GUI 1') $btn1 = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20) $gui2 = GUICreate('GUI 2') $btn2 = GUICtrlCreateButton('Button 2', 10, 20, 100, 20) GUISetState(@SW_SHOW, $gui1) While 1 $msg = GUIGetMsg(1) Switch $msg[1] ; Window Handle Case $gui1 Switch $msg[0] ; Event Case $GUI_EVENT_CLOSE ExitLoop Case $btn1 GUISetState(@SW_HIDE, $gui1) GUISetState(@SW_SHOW, $gui2) 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 EndSwitch WEnd GUIDelete($gui1) GUIDelete($gui2)
und meine, auf dein bsp angewendete schleife:AutoIt
Alles anzeigen$mu_online_reconnect_options = GUICreate("Options", 177, 187, 194, 125) $save_the_settings = GUICtrlCreateLabel("Save the settings", 8, 8, 86, 17) $setting_control = GUICtrlCreateLabel("Ctrl + F10", 104, 8, 49, 17) $start_mu_online_reconnect = GUICtrlCreateLabel("Start", 8, 40, 26, 17) $start_control = GUICtrlCreateLabel("Ctrl + F11", 104, 40, 49, 17) $exit_mu_online_reconnect = GUICtrlCreateLabel("Exit", 8, 72, 21, 17) $exit_control = GUICtrlCreateLabel("Ctrl + F12", 104, 72, 49, 17) $amount_of_accounts = GUICtrlCreateCombo("Amount of account´s", 8, 127, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "One account|Two account´s|Three account´s|Four account´s|Five account´s|Six account´s|Seven account´s|Eight account´s") $Input_intervall_of_reconnectcheck = GUICtrlCreateInput("Intervall", 8, 162, 145, 21) $Combo1 = GUICtrlCreateCombo("Desktop resolution", 8, 97, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "1920 x 1080") GUISetState (@SW_HIDE) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $mu_online_reconnect_main Switch $nMsg() Case $GUI_EVENT_CLOSE Exit Case $slot_1 _slot_1check() Case $slot_2 _slot_2check() Case $slot_3 _slot_3check() Case $slot_4 _slot_4check() Case $slot_5 _slot_5check() Case $slot_6 _slot_6check() Case $slot_7 _slot_7check() Case $slot_8 _slot_8check() Case $options GUISetState(@SW_SHOW, $mu_online_reconnect_options) EndSwitch Case $mu_online_reconnect_options Switch $nMsg() Case $GUI_EVENT_CLOSE GUISetState(@SW_SHOW, $mu_online_reconnect_main) GUISetState(@SW_HIDE, $mu_online_reconnect_options) Endswitch EndSwitch WEnd
ich finde meinen fehler einfach nicht, denn wenn ich das programm ausführe, dann öffnet sich weder das fenster wenn ich auf den button $options drücke, noch kann ich das hauptfenster bedienen -
Dann musst du eben die Controls verstecken und wieder anzeigen lassen mit GUICtrlSetState. Wie man Controls mit GUICtrlSetPos verschieben kann hat BugFix ja bereits demonstriert. Somit steht deinem Vorhaben ja nichts im Wege ;).
das war ja auch mein ursprungsproblem, dass autoit inputboxen und radioboxen nicht versteckt, zumindest krieg ich es nicht umgesetzt mit GUICtrlSetState (@SW_HIDE) oder GUICtrlSetState ($id_slot_1, $GUI_HIDE)
edit: auf einmal klappt es?! ich bin am verzweifeln, danke erstmal jungs! ich mach mal weiter ..
-
ich muss leider nochmal fragen wenn ich den code versuche bei mir einzubauen, klappt das irgendwie nicht
AutoIt
Alles anzeigen$id_slot_1 = GUICtrlCreateInput("ID", 8, 40, 121, 21) GUICtrlSetResizing(-1, 802) $password_slot_1 = GUICtrlCreateInput("Password", 8, 72, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD)) GUICtrlSetResizing(-1, 802) $market_slot_1 = GUICtrlCreateRadio("Market", 8, 104, 121, 17) GUICtrlSetResizing(-1, 802) $leveling_slot_1 = GUICtrlCreateRadio("Leveling", 8, 128, 113, 17) GUICtrlSetResizing(-1, 802) Global $iW = 121, $iH_small = 21, $iH_full, $iH, $iX, $iY Global $fSwitch = False $aSize = WinGetPos($id_slot_1) $iX = $aSize[0] $iY = $aSize[1] $iW = $aSize[2] $iH_small = $aSize[3] $iH_full = $iH_small +30 While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $slot_1 _slot_1check() $fSwitch = Not $fSwitch $iH = $fSwitch ? $iH_full : $iH_small WinMove($id_slot_1, '', $iX, $iY, $iW, $iH) EndSwitch WEnd
und ich bekomme folgenden error : "C:\Users\Manuel\Desktop\Mu Online Reconnect v0.1.au3" (50) : ==> Subscript used on non-accessible variable.:
$iX = $aSize[0]
$iX = $aSize^ ERROR
ich möchte mich aber vorab nochmal bedanken, dass ihr und ganz besonders du BugFix, euch so viel mühe gebt mir zu helfenedit: ich verstehe ja, dass die ziffern eine array rückgabe sind und er die x, y, höhe und weite ausliest, aber das funktioniert nur bei normalen GUI´s.. wie setzte ich das jetzt bei einem input um, dass nur dieser "eingeklappt" wird und nicht mein ganzes fenster
-
ok ich hab mir mal deine methode angeguckt und wenn ich sie richtig verstanden haben sollte, setzt du die hauptfenstergröße hoch. ich glaube aber nicht, dass das in meinem fall klappen wird (führ mein programm mal bitte in einem skript aus). denn mein gui sieht wie folgt aus:
AutoIt--------------------------------------------------------------------- -[BUTTON1] [BUTTON5] [INPUT101] [INPUT102]- -[BUTTON2] [BUTTON6] [CHECKB1] [CHECKB2] - -[BUTTON3] [BUTTON7] [INPUT201] [INPUT202]- -[BUTTON4] [BUTTON8] [INPUT301] [INPUT302]- - - - - ---------------------------------------------------------------------
und wenn ich BUTTON1 gedrückt habe soll es so aussehen:
AutoIt
Alles anzeigen----------------------------------------------------------------------- -[BUTTON1] [BUTTON5] [INPUT101] [INPUT102] - -[INPUTID] [BUTTON6] [CHECKB1] [CHECKB2] - -[INPUTPW] [BUTTON7] [INPUT201] [INPUT202]- -[RADIO1] [BUTTON8] [INPUT301] [INPUT302]- -[RADIO2] - -[BUTTON2] - -[BUTTON3] - -[BUTTON4] - - - - - ---------------------------------------------------------------------
ich hoffe ich hab es gut genug beschrieben :p
-
ok ich werde das nachher mal alles in ruhe durchlesen und durcharbeiten, danke :). aber nochmal, wenn ich zB den befehl GUICtrlSetState ($password_slot_1, $GUI_HIDE) nutze, funktioniert es nicht, d.h. der inputslot wird nicht versteckt oder deaktiviert und ich finde die lösung, dass sich kein neues fenster öffnet, sondern unter dem butten die inputs und die radioboxen "öffnen" schöner, deswegen muss ich dich diesbezüglich nochmal fragen wie ich das umsetze, dass sie "versteckt" und oder deaktiviert werden.. und soll ich sie schon vorher "erstellen" und dann direkt verstecken? wie setze ich das am besten um Danke dir :p
lg -
okay super.. also hier nochmal das komplette skript und ich will nochmal erklären was ich damit bewirken wollte :p
AutoIt
Alles anzeigen#cs ---------------------------------------------------------------------------- Mu Online reconnect version 0.1 created by Manuel Bender #ce ---------------------------------------------------------------------------- #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $mu_online_reconnect = GUICreate("Mu Online reconnect v0.1", 513, 257, 194, 125) GUISetBkColor(0xFFFFFF) $credits = GUICtrlCreateLabel("Mu Online reconnect v0.1, created by Manuel Bender.", 248, 232, 261, 17) GUICtrlSetBkColor(-1, 0x808080) $slot_1 = GUICtrlCreateButton("Slot 1", 8, 8, 75, 25) $slot_2 = GUICtrlCreateButton("Slot 2", 8, 40, 75, 25) $slot_3 = GUICtrlCreateButton("Slot 3", 8, 72, 75, 25) $slot_4 = GUICtrlCreateButton("Slot 4", 8, 104, 75, 25) $slot_5 = GUICtrlCreateButton("Slot 5", 88, 8, 75, 25) $slot_6 = GUICtrlCreateButton("Slot 6", 88, 40, 75, 25) $slot_7 = GUICtrlCreateButton("Slot 7", 88, 72, 75, 25) $slot_8 = GUICtrlCreateButton("Slot 8", 88, 104, 75, 25) $options = GUICtrlCreateButton("Options", 341, 200, 75, 25) $help = GUICtrlCreateButton("Help", 424, 200, 75, 25) $name_of_the_store_1 = GUICtrlCreateInput("Name of the store (1)", 244, 5, 121, 21) $market_yellingcheck_1 = GUICtrlCreateCheckbox("Market yelling", 244, 33, 121, 17) $market_yelling_text_1 = GUICtrlCreateInput("Market yelling text", 244, 60, 121, 21) $market_yelling_intervall_1 = GUICtrlCreateInput("Market yelling intervall", 244, 88, 121, 21) $name_of_the_store_2 = GUICtrlCreateInput("Name of the store (2)", 380, 5, 121, 21) $market_yellingcheck_2 = GUICtrlCreateCheckbox("Market yelling", 380, 33, 121, 17) $market_yelling_text_2 = GUICtrlCreateInput("Market yelling text", 380, 60, 121, 21) $market_yelling_intervall_2 = GUICtrlCreateInput("Market yelling intervall", 380, 88, 121, 21) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $slot_1 _slot_1check() EndSwitch WEnd Func _slot_1check() Local Static $slot_1check = True $slot_1check = Not $slot_1check $id_slot_1 = GUICtrlCreateInput("ID", 8, 40, 121, 21) $id_slot_1r = GUICtrlRead ($id_slot_1) $password_slot_1 = GUICtrlCreateInput("Password", 8, 72, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD)) $password_slot_1r = GUICtrlRead ($password_slot_1) $market_slot_1 = GUICtrlCreateRadio("Market", 8, 104, 121, 17) $leveling_slot_1 = GUICtrlCreateRadio("Leveling", 8, 128, 113, 17) If $slot_1check Then GUISetState (@SW_DISABLE, $id_slot_1) GUICtrlSetPos ($slot_2, 8, 40, 75, 25) GUICtrlSetPos ($slot_3, 8, 72, 75, 25) GUICtrlSetPos ($slot_4, 8, 104, 75, 25) GUICtrlSetPos ($slot_5, 88, 8, 75, 25) GUICtrlSetPos ($slot_6, 88, 40, 75, 25) GUICtrlSetPos ($slot_7, 88, 72, 75, 25) GUICtrlSetPos ($slot_8, 88, 104, 75, 25) Else $id_slot_1 = GUICtrlCreateInput("ID", 8, 40, 121, 21) $password_slot_1 = GUICtrlCreateInput("Password", 8, 72, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD)) $market_slot_1 = GUICtrlCreateRadio("Market", 8, 104, 121, 17) $leveling_slot_1 = GUICtrlCreateRadio("Leveling", 8, 128, 113, 17) GUICtrlSetPos ($slot_2, 8, 152, 75, 25) GUICtrlSetPos ($slot_3, 8, 184, 75, 25) GUICtrlSetPos ($slot_4, 8, 216, 75, 25) GUICtrlSetPos ($slot_5, 136, 8, 75, 25) GUICtrlSetPos ($slot_6, 136, 40, 75, 25) GUICtrlSetPos ($slot_7, 136, 72, 75, 25) GUICtrlSetPos ($slot_8, 136, 104, 75, 25) EndIf EndFunc
ich wollte ursprünglich mit dem skript bewirken, dass wenn der user (zB) button §slot_1 drückt, ein zwei inputboxen sowie 2 radioboxen angezeigt werden, da wenn ich ein neues fenster öffnen lassen würde, ich das problem hätte, dass sich das ganze programm schließen würde sobald ich "X" auf dem fenster drücken würde. ich benutze autoit erst seit knapp 3 tagen und kenne mich nicht wirklich aus, weswegen ich wahrscheinlich auch noch sehr viele fehler mache.. aber ich würde sehr gerne lernen wie ihr seht, soll es ein programm werden was später reloggt und ich hoffe ich könnt mir helfen.. oder speziell du lg
-
Super, Danke! Ich werde es direkt mal ausprobieren
-
Hi! Und zwar würde ich gerne folgendes umsetzen: Wenn ich Button X (hier Button: Slot_1) gedrückt habe würde ich gerne die position von anderen buttons verschieben und 2 inputboxen generieren.. soweit so gut. wenn ich nochmal button x (also slot_1) drücke möchte ich alles gerne rückgängig machen.. da alles beliebig oft wiederholbar sein soll hatte ich es in eine schleife gepackt und wollte es wie folgt umsetzen:
------------------------------------------------------------------------
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $slot_1
If $slot_1check = 0 Then
GUICtrlSetPos ( $slot_1, 162, 8, 75, 25)
$slot_1check = 1
EndIf
If $slot_1check = 1 Then
GUICtrlSetPos ( $slot_1, 8, 8, 75, 25)
$slot_1check = 0
EndIf
EndSwitch
WEnd
---------------------------------------------------------------------------
Mein Problem ist (wie ihr euch bereits denken könnt, da ich es ja in eine schleife gepackt habe), dass wenn ich Button $Slot_1 drücke, dass er zwar die position ändert, aber auch direkt die zweite If abfrage ausführt.
hoffe ihr könnt mein problem nachvollziehen und mir helfen
lg und danke