Beispiel:
[autoit]
Mousemove (100, 200)
bewegt die Maus zur X- Koordinate 100 / Y- Koordinate 200.
Am besten mal die angesprochenen Befehle in der Hilfe ansehen, ist dort sehr gut beschrieben!
Beispiel:
[autoit]
Mousemove (100, 200)
bewegt die Maus zur X- Koordinate 100 / Y- Koordinate 200.
Am besten mal die angesprochenen Befehle in der Hilfe ansehen, ist dort sehr gut beschrieben!
Ich benötige; Maus hin und her fahr funktion^^ etwas zum farben erkennen, und noch wie mann tasten drücken lässt.
was du genau machen willst ist mir nicht ganz klar.
Diese Funktionen sollten dich weiterbringen:
Mousemove
PixelGetColor
Send
$123 = IniRead("C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\regtweaks.ini", "RegWrite", "Tweak2", "" )
$123 = StringSplit($123, ',')
If UBound($123) = 5 Then $ret = RegWrite(Execute($123[1]), Execute($123[2]), Execute($123[3]), Execute($123[4]))
so gehts auch.
Bin zwar noch nicht am Ziel aber es wird besser. Scheinbar muss man die Werte aus dem Array mit einem Execute herzitieren? Trotzdem seltsam ..
Endweder $123[1] hat einen bestimmten Wert oder es hat ihn eben nicht oder?
edit \ hehe ist ja das gleiche wie von Oscar nur ohne _ArrayDisplay, gibt es einen bestimmten Grund diese Funktion noch einzubauen?
edit2\
So habs geschafft. Meine erstes Skript mit 2 dimensionalem Array ![]()
$var = IniReadSection("C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\regtweaks.ini" ,'RegWrite')
If @error Then
MsgBox(4096, "", "Kein Array erstellbar")
else
For $i = 1 To $var[0][0]
$123 = StringSplit($var[$i][1] , ',')
If UBound($123) = 5 Then $ret = RegWrite(Execute($123[1]), Execute($123[2]), Execute($123[3]), Execute($123[4]))
Next
endif
die .ini sieht dabei so aus:
Vielen dank an alle die mitgeholfen haben.
Greenhorn sorry das ich die von dir geschrieben Funktion so links liegen gelassen habe, bin blutiger Anfänger und (noch) nicht der Lage beliebige Funktionen in meine Skripte einzusetzen.
Aber wieso passe ich dann nicht direkt die .reg an?
Also ich will dir deine Funktion bestimmt nicht schlecht reden (verstehe sie ja gar nicht), aber ich frage mich ob das für meinen Zweck nicht etwas überdimensioniert ist (die Funktion hat ja auch mehr Zeilen als mein ganzes Skript).
Vielleicht erstelle ich mir wirklich einfach eine tweaks.reg und führe die über autoit aus?
Allerdings ist mir wirklich nicht klar wieso der Vorschlag von Oscar nicht funktioniert? Deiner Meinung nach müsste es ein ganz anderer Ansatz über IniReadSectionNames() sein?
Um ehrlich zu sein verstehe ich den Sinn der RegToAu3 nicht.
Wenn ich doch schon eine funktionierende .reg datei erstellt habe, wieso soll ich diese dann in autoit übersetzen und die einträge darüber erstellen/ändern?
Über IniReadSectionNames() liegt die Info über den zu schreibenden Reg-Schlüssel eben im Sektionsnamen, während Ansatz nur über IniReadSection die ganzen Informationen im jeweiligen Ini-Schlüssel enthalten sind (der Wert des Schlüssels eben).
Könnte natürlich den Vorteil haben, dass es überhaupt funktioniert ![]()
Also gut irgendwie logisch.
Stringsplit erstellt ein Array mit in diesem Fall 5 "Werten", dabei gibt Wert[0] an wieviele sich im Array befinden.
[autoit]
If UBound($123) = 5 Then
verhindert eigentlich nur, dass in die Registrierung geschrieben wird, wenn nicht alle Parameter angegeben worden sind?
Komischerweise funktioniert es bei mir nicht, obwohl per msgbox alles richtig angezeigt wird ![]()
$123 = IniRead("C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\regtweaks.ini", "RegWrite", "Tweak2", "" )
$123 = StringSplit($123, ',')
msgbox(1, "", $123[1])
msgbox(1, "", $123[2])
msgbox(1, "", $123[3])
msgbox(1, "", $123[4])
If UBound($123) = 5 Then RegWrite($123[1], $123[2], $123[3], $123[4])
die .ini sieht dabei so aus:
ich habs schon mit verschiedenen Veränderungen in der .ini versucht (mit ', ganz ohne ") aber leider nicht die richtige Kombination rausgefunden.
Muss eine Kleinigkeit verdreht sein, ich komm aber nicht drauf.
Mhm ich steh schon wieder aufm Schlauch. Irgendwie ein grundlegendes Verständnisproblem
[autoit]
$123 = IniRead("C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\regtweaks.ini", "RegWrite", "Tweak2", "" )
msgbox(1, "", $123)
RegWrite( $123)
die .ini sieht so aus
in der msg box sieht der text dann so aus: "HKEY_LOCAL_MACHINE\SOFTWARE\Test", "lala3", "REG_DWORD" , "3"
und wenn:
$123 = "HKEY_LOCAL_MACHINE\SOFTWARE\Test", "lala3", "REG_DWORD" , "3"
dann müsste die Regwritezeile doch aus sehen:
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "lala3", "REG_DWORD" , "3")
wenn ich die Zeile selbst so eingebe funktioniert RegWrite, nur über den Umweg funktionierts nicht! Für mich irgendwie unlogisch ![]()
Wenn ich die .ini so anpassen, dass jeder Regtweak aus 4 Key/Value Paare besteht (eben die 4 Variablen der RegWrite Funktion) funktioniert das ganze auch, allerdings hab ich dann in jeder RegWrite Zeile 4 Inireads und brauche pro Tweak 4 Einträge in der .ini
Irgendwie komisch ![]()
Hehe IniReadSection macht tatsächlich genau was ich will. Glaube das hab ich bis jetzt wegen der Rückgabe in ein Array völlig ignoriert (kann mit Arrays leider noch fast nichts anfangen).
Ich werde wohl doch mal das Array Tutorial mal durcharbeiten müssen - scheint doch ganz nützlich zu sein.
Die Lösung von Greenhorn schaue ich mir auch mal an, verstehe ich noch nicht so ganz.
Danke euch beiden, ich melde mich wieder wenns nicht klappt.
Hey,
ich hab mir ein kleines Skript zum Einrichten meiner HPTC-Oberfläche geschrieben. Damit verändere ich die setup.ini des Hauptprogramms.
Hier mal der Vollständigkeit halber das Skript:
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUICoordMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $GUI = GUICreate("Setup", 450, 600)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Button1 = GUICtrlCreateButton("Auflösung/Bilder", 100, 100,250,60)
$Button2 = GUICtrlCreateButton("Buttons", 100, 200,250,60)
$Button3 = GUICtrlCreateButton("Programme", 100, 300,250,60)
$Button4 = GUICtrlCreateButton("Reg-Tweaks", 100, 400,250,60)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]while 1
$msg = GUIGetMsg()
switch $msg
case $GUI_EVENT_Close
Exit
case $button1
Opt("GUICoordMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $Gui1 = GUICreate("Form1", 633, 447, 193, 125)
Local $Label1 = GUICtrlCreateLabel("Auflösung", 20, 20, 89, 28)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
Local $Input1 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Auflösung", "Horizontal", ""), 16, 60, 110, 21)
Local $input2 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Auflösung", "Vertikal", ""), 16, 90, 110, 21)
Local $Label2 = GUICtrlCreateLabel("Horizontal", 140, 60, 64, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label3 = GUICtrlCreateLabel("Vertikal", 140, 90, 49, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label5 = GUICtrlCreateLabel("Hintergrundbilder", 20, 140, 151, 28)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
Local $Input3 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Hintergrundbilder", "HauptGUI", ""), 16, 180, 316, 21)
Local $Input4 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Hintergrundbilder", "EinstellungenGUI", ""), 16, 210, 316, 21)
Local $Input5 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Hintergrundbilder", "BeendenGUI", ""), 16, 240, 316, 21)
Local $Label4 = GUICtrlCreateLabel("Haupt-GUI", 350, 180, 67, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label6 = GUICtrlCreateLabel("Beenden-GUI", 350, 210, 86, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label7 = GUICtrlCreateLabel("Einstellungen-GUI", 350, 240, 111, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Speichern = GUICtrlCreateButton("Speichern", 16, 300, 153, 49, 0)
Local $Back = GUICtrlCreateButton("Zurück", 179, 300, 153, 49, 0)
GUISetState()
while 1
$msg = GUIGetMsg()
switch $msg
case $GUI_EVENT_Close
Exit
case $Speichern
IniWrite(@ScriptDir & "\htpc.ini", "Auflösung", "Horizontal", GUICtrlRead($Input1))
Iniwrite(@ScriptDir & "\htpc.ini", "Auflösung", "Vertikal", GUICtrlRead($Input2))
Iniwrite(@ScriptDir & "\htpc.ini", "Hintergrundbilder", "HauptGUI", GUICtrlRead($Input3))
Iniwrite(@ScriptDir & "\htpc.ini", "Hintergrundbilder", "EinstellungenGUI", GUICtrlRead($Input4))
Iniwrite(@ScriptDir & "\htpc.ini", "Hintergrundbilder", "BeendenGUI", GUICtrlRead($Input5))
MsgBox(1, "", "Gespeichert")
case $Back
GUISetState(@SW_HIDE, $GUI1)
GUISetState(@SW_SHOW, $GUI)
ExitLoop
EndSwitch
Wend
case $button2
Opt("GUICoordMode", 1)
$Gui2 = GUICreate("Form2", 713, 497, 193, 125)
$Label1 = GUICtrlCreateLabel("Button", 16, 20, 57, 28)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
Local $Input1 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Left", ""), 16, 60, 150, 21)
Local $Input2 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Width", ""), 16, 90, 150, 20)
Local $Input3 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Height", ""), 16, 120, 150, 21)
Local $Input4 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Style", ""), 16, 150, 150, 21)
Local $Input5 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Top", ""), 16, 180, 150, 21)
Local $Input6 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Abstand", ""), 16, 210, 150, 21)
Local $Input7 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Farbe", ""), 16, 240, 150, 21)
Local $Input8 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Button", "Fokusfarbe", ""), 16, 270, 150, 21)
Local $Label3 = GUICtrlCreateLabel("Left", 186, 60, 25, 40)
Local $Label4 = GUICtrlCreateLabel("Width", 186, 90, 32, 40)
Local $Label5 = GUICtrlCreateLabel("Height", 186, 120, 35, 40)
Local $Label6 = GUICtrlCreateLabel("Style", 186, 150, 27, 40)
Local $Label7 = GUICtrlCreateLabel("Top", 186, 180, 23, 40)
Local $Label8 = GUICtrlCreateLabel("Abstand", 186, 210, 31, 40)
Local $Label8 = GUICtrlCreateLabel("Farbe", 186, 240, 31, 40)
Local $Label9 = GUICtrlCreateLabel("Fokusfarbe", 186, 270, 72, 40)
Local $Label2 = GUICtrlCreateLabel("Buttonschrift", 360, 20, 105, 28)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
Local $Input9 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonschrift", "Größe", ""), 360, 60, 150, 21)
Local $Input10 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonschrift", "Weight", ""), 360, 90, 150, 21)
Local $Input11 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonschrift", "Weight2", ""), 360, 120, 150, 21)
Local $Input12 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonschrift", "Attribute", ""), 360, 150, 150, 21)
Local $Input13 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonschrift", "Font", ""), 360, 180, 150, 21)
Local $Label3 = GUICtrlCreateLabel("Größe", 530, 60, 42, 20)
Local $Label10 = GUICtrlCreateLabel("Weight", 530, 90, 46, 20)
Local $Label11 = GUICtrlCreateLabel("Weight2", 530, 120, 53, 20)
Local $Label12 = GUICtrlCreateLabel("Attribute", 530, 150, 52, 20)
Local $Label13 = GUICtrlCreateLabel("Font", 530, 180, 30, 20)
Local $Speichern = GUICtrlCreateButton("Speichern", 16, 350, 150, 50, 0)
Local $Back = GUICtrlCreateButton("Zurück", 200, 350, 150, 50, 0)
GUISetState(@SW_SHOW)
while 1
$msg = GUIGetMsg()
switch $msg
case $GUI_EVENT_Close
Exitloop
case $Speichern
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Left", GUICtrlRead($Input1))
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Width", GUICtrlRead($Input2))
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Height", GUICtrlRead($Input3))
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Style", GUICtrlRead($Input4))
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Top", GUICtrlRead($Input5))
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Abstand", GUICtrlRead($Input6))
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Farbe", GUICtrlRead($Input7))
IniWrite(@ScriptDir & "\htpc.ini", "Button", "Fokusfarbe", GUICtrlRead($Input8))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonschrift", "Größe", GUICtrlRead($Input9))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonschrift", "Weight", GUICtrlRead($Input10))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonschrift", "Weight2", GUICtrlRead($Input11))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonschrift", "Attribute", GUICtrlRead($Input12))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonschrift", "Font", GUICtrlRead($Input13))
MsgBox(1, "", "Gespeichert")
case $Back
GUISetState(@SW_HIDE, $GUI2)
GUISetState(@SW_SHOW, $GUI)
ExitLoop
EndSwitch
Wend
case $button3
Opt("GUICoordMode", 1)
Global $GUI3 = GUICreate("Form3", 737, 400, 193, 91)
Local $Label1 = GUICtrlCreateLabel("Buttonbeschriftung", 16, 16, 160, 28)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
Local $Label2 = GUICtrlCreateLabel("Programme", 300, 16, 103, 28)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
Local $Input1 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Programme", "Button1", ""), 300, 60, 300, 21)
Local $Input2 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Programme", "Button2", ""), 300, 90, 300, 21)
Local $Input3 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Programme", "Button3", ""), 300, 120, 300, 21)
Local $Input4 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Programme", "Button4", ""), 300, 150, 300, 21)
Local $Input5 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Programme", "Button5", ""), 300, 180, 300, 21)
Local $Input6 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Programme", "Button6", ""), 300, 210, 300, 21)
Local $Input7 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button1", ""), 16, 60, 150, 21)
Local $Input8 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button2", ""), 16, 90, 150, 21)
Local $Input9 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button3", ""), 16, 120, 150, 21)
Local $Input10 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button4", ""), 16, 150, 150, 21)
Local $Input11 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button5", ""), 16, 180, 150, 21)
Local $Input12 = GUICtrlCreateInput(IniRead (@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button6", ""), 16, 210, 150, 21)
Local $Speichern = GUICtrlCreateButton("Speichern", 16, 275, 150, 50, 0)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Back = GUICtrlCreateButton("Zurück", 186, 275, 150, 50, 0)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label3 = GUICtrlCreateLabel("Button1", 186, 60, 48, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label4 = GUICtrlCreateLabel("Button2", 186, 90, 48, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label5 = GUICtrlCreateLabel("Button3", 186, 120, 48, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label6 = GUICtrlCreateLabel("Button4", 186, 150, 48, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label7 = GUICtrlCreateLabel("Button5", 186, 180, 48, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label8 = GUICtrlCreateLabel("Button6", 186, 210, 48, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label9 = GUICtrlCreateLabel("Programm1", 620, 60, 74, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label10 = GUICtrlCreateLabel("Programm2", 620, 90, 74, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label11 = GUICtrlCreateLabel("Programm3", 620, 120, 74, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label12 = GUICtrlCreateLabel("Programm4", 620, 150, 74, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label13 = GUICtrlCreateLabel("Programm5", 620, 180, 74, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Local $Label14 = GUICtrlCreateLabel("Programm6", 620, 210, 74, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
while 1
$msg = GUIGetMsg()
switch $msg
case $GUI_EVENT_Close
Exit
case $Speichern
IniWrite(@ScriptDir & "\htpc.ini", "Programme", "Button1", GUICtrlRead($Input1))
IniWrite(@ScriptDir & "\htpc.ini", "Programme", "Button2", GUICtrlRead($Input2))
IniWrite(@ScriptDir & "\htpc.ini", "Programme", "Button3", GUICtrlRead($Input3))
IniWrite(@ScriptDir & "\htpc.ini", "Programme", "Button4", GUICtrlRead($Input4))
IniWrite(@ScriptDir & "\htpc.ini", "Programme", "Button5", GUICtrlRead($Input5))
IniWrite(@ScriptDir & "\htpc.ini", "Programme", "Button6", GUICtrlRead($Input6))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button1", GUICtrlRead($Input7))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button2", GUICtrlRead($Input8))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button3", GUICtrlRead($Input9))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button4", GUICtrlRead($Input10))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button5", GUICtrlRead($Input11))
IniWrite(@ScriptDir & "\htpc.ini", "Buttonbeschriftung", "Button6", GUICtrlRead($Input12))
MsgBox(1, "", "Gespeichert")
case $Back
GUISetState(@SW_HIDE, $GUI3)
GUISetState(@SW_SHOW, $GUI)
ExitLoop
EndSwitch
Wend
case $button4
EndSwitch
Wend
Der 4 Punkt (Button) bereitet mir aber etwas Kopfzerbrechen.
Ich möchte damit verschiedene Änderungen in der Registrierung automatisch vornehmen. Wie das funktioniert weiss ich schon (Regread, Redwrite usw.), allerdings hat meine bisherige Liste keinen Anspruch auf Vollständigkeit und unterscheidet sich auch von Betriebssystem zu Betriebssystem. Also würde ich das gerne Auslagern, auch um Einträge nachträglich ohne neu zu compilieren hinzufügen zu können.
Bei einer Auslagerung auf eine .ini müsste ich aber ja für jeden Reg-tweak schonmal einen "Key" anlegen, ich kenne aber die genaue Anzahl der Reg-tweaks nicht und die Liste wird sich im Laufe der Zeit vermutlich auch erweitern.
Soweit ich es verstanden habe, ist es auch nicht möglich eine fertige .exe zu verändern, d.h. ich kann dem Setup-Programm nachträgliche Einträge in der .ini nichtmehr mitteilen.
So, ich hoffe von euch kennt jemand eine Lösung.
Gruß nuts
ich verwende diese Funktion: GUICtrlCreatePic
Ich denke mal du willst bei der Ini das Hintergrundbild mit samt dem Pfad eintragen. Warum schreibst du dein defautbild also nicht gleich in die HTPC.INI?
war auch mein erster gedanke - leider erscheint dann auch kein hintergrundbild.
so müsste doch die setup.ini aussehen oder?
Hm weiss noch nicht. Eigentlich wärs schön wenn man die setup.ini im netzwerk ablegen könnte (bzw. an einem frei verfügbaren pfad).
Soweit bin ich aber noch lange nicht
immerhin muss ich dann ja der compilierten exe irgendwie mitteilen wo sich die setup.ini befindet!
Derzeit teste ich noch und hab die ini halt in den Skriptordner geworfen.
Wenn ich im Beispiel die Funktion weglasse wird ist mein Defaultbild ähm eben kein Bild.
edit \ weil der Key ja in der setup.ini vorhanden ist - allerdings ohne Wert!
Nochmal zum Verständnis meine setup.ini
Und dann soll nicht gar kein Bild sondern das Defaultbild im Ordner des Skriptes angezeigt werden.
Hey,
hab mal wieder eine kleine Frage:
Ich möchte verschiedene Informationen in eine Setup.ini auslagern.
Dabei sollen aber alle Sektions und Keys schon angelegt sein. Ich finde das so einfacher zum editieren, gerade auch für Anfänger.
Beim Auslagern des Hintergrundbilds hätte ich gern ein Defaultbild, dass im Skriptordner liegt.
Allerdings wird das Defaultbild nicht verwendet, da der jeweilige Key ja in der .ini angelgt ist!
Hab jetzt etwas drum rumprogrammiert:
[autoit]
Global $VA = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Auflösung", "Vertikal", "720")
Global $HA = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Auflösung", "Horizontal", "1280")
Dim $DefaultBild = @ScriptDir & "\htpc2.bmp"
Dim $Bild = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Hintergrundbilder", "HauptGUI", "")
_Iniread($Bild, $defaultbild)
Global $HauptGUI = GUICreate("HTPC", $HA, $VA, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
GUICtrlCreatePic ($Bild,0 ,0, $HA, $VA)
GUICtrlSetState(-1, $GUI_DISABLE)
Func _Iniread($key, $default)
IF $key = "" then
$bild = $default
Endif
Endfunc
Somit wird das hinterlegte Defaultbild angezeigt, wenn als Wert bei HauptGUI nichts eingegeben wird.
Funktioniert im Prinzip - wollte mich trotzdem mal vergewissern wie ihr sowas löst, wahrscheinlich hab ich die einfachste Lösung nämlich wieder übersehen ![]()
Gruß nuts
okay, großes Lob an Oscar.
Ich denke mit der letzten Version kann ich leben.
Wenn noch jemand was schlaues einfällt woher das Flackern kommen könnte: bitte melden!
Ansonsten: [Gelöst}
Hm jap - fast kein flackern mehr zu sehen.
Leider kann ich der letzten nichtmehr folgen
Dabei wird der Button schon am anfang eingefärbt und die Funktion ändert den Button im Fokus und setzt den zuletzt im Fokus gewesenen Button zurück auf die Defaultfarbe?
Darum flackerts höchstens ab und zu noch am "last_fokus" oder am "fokus" Button?
stimmt! so ists schon besser.
Hat jemand ne Idee woher das kommt?
Hm wenn sich das bestättigt muss ich mir wohl was neues ausdenken.
Jemand ne ahnung woran das liegen könnte? Möglicherweise eine Laufzeitsgrenze von autoit?
Hm ich hab jetzt die Funktion mal so angepasst wie ich es haben wollte:
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;;;;;;;;;;;;;;;;;;;; Haupt-Menü Variablen
Opt("GUICoordMode", 1)
Global $last_focus = -1
Global $Farbe = 0x00BFFF
Global $HauptGUI = GUICreate("HTPC", 400, 800, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
GUISetBkColor(000000)
;;;;;;;;;;;;;;;;;;;;;;Buttons;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dim $L = 100 ; Buttonleft
Dim $W = 200 ; Buttonwidth
Dim $H = 60; Buttonheight
Dim $C = 4169E1 ;Hintergrundfarbe Button
Dim $F = GUISetFont( 18, 800, 0, "MS Sans Serif") ;Schrift der Buttons
Global $TV = GUICtrlCreateButton("TV", $L, 8, $W, $H, -1, $WS_EX_STATICEDGE)
Global $DVD = GUICtrlCreateButton("DVD", $L, 88, $W, $H, -1, $WS_EX_STATICEDGE)
Global $Aufnahmen = GUICtrlCreateButton("Aufnahmen", $L, 168, $W, $H, -1, $WS_EX_STATICEDGE)
Global $Internet = GUICtrlCreateButton("Internet", $L, 248, $W, $H, -1, $WS_EX_STATICEDGE)
Global $Musik = GUICtrlCreateButton("Musik/Bilder", $L, 328, $W, $H, -1, $WS_EX_STATICEDGE)
Global $Bluray = GUICtrlCreateButton("Bluray", $L, 408, $W, $H, -1, $WS_EX_STATICEDGE)
Global $Einstellungen = GUICtrlCreateButton("Einstellungen", $L, 488, $W, $H, -1, $WS_EX_STATICEDGE)
Global $Beenden = GUICtrlCreateButton("Beenden", $L, 568, $W, $H, -1, $WS_EX_STATICEDGE)
Global $Exit = GUICtrlCreateButton("exit", $L, 648, $W, $H, -1, $WS_EX_STATICEDGE)
GUISetState(@SW_SHOW, $HauptGUI)
GUISetState(@SW_MAXIMIZE, $HauptGUI)
While 1
$msg = GUIGetMsg()
switch $msg
case $GUI_EVENT_Close
Exit
Case $TV
Case $DVD
Case $Aufnahmen
Case $Musik
Case $Bluray
Case $Einstellungen ;Aufruf Einstellungen
Case $Beenden ;Aufruf Beenden
Case $Exit
exit
EndSwitch
_HauptReset(ControlGetFocus('',''))
WEnd
Func _HauptReset($Button) ;Grundfunktion von Oscar http://www.autoit.de
If $Button <> $last_focus Then
$last_focus = $Button
Local $Farbe = 0x1E90FF, $Fokusfarbe = 0x00BFFF
Local $aID = StringSplit('tv,dvd,aufnahmen,internet,musik,bluray,einstellungen,beenden,exit', ',')
Local $aButton = StringSplit('button1,button2,button3,button4,button5,button6,button7,button8,button9', ',')
For $i = 1 To $aID[0]
GUICtrlSetBkColor(Eval($aID[$i]), $Farbe)
Next
For $i = 1 To $aID[0]
If $aButton[$i] = $Button Then
GUICtrlSetBkColor(Eval($aID[$i]), $Fokusfarbe)
EndIf
Next
EndIf
EndFunc
Das Problem mit den flackernden Buttons bleibt aber leider
(mit scharzen Hintergrund wie im Beispiel sieht mans ganz gut)
Nach meinen Tests liegt das an der Resetfunktion. Ist wohl zu aufwendig alle Buttons gleichzeitig zurückzusetzen?
Bin mir aber auch nicht sicher, ob es mit dem jeweiligen System und den Komponenten bzw. den Treibern zusammenhängt. Daher würde ich mich über ein paar Tester freuen.
Ich verwende:
amd x2 3800 ee
onboard graka auf 690G basis
WinXp inkl. sp2
edit\ um das Flackern noch etwas zu beschreiben:
Beim Bewegen der Markierung zeigt sich z.b. ein Strich in der Hintergrundfarbe bei den nicht aktiven Buttons.
Alles klar.
Die Funktion ersetzt in meinem Skript ca. 300 Zeilen ![]()
Nochmals vielen dank! ![]()
edit \ hm mir fällt da was auf:
Manchmal flackern die buttons wenn ich den Fokus über die Cursortasten ändere. Kann aber leider keine Regelmäßigkeit feststellen
Muss ich jetzt nochmal mit meiner Version gegenchecken.
Ich glaube er will mit den Cursortasten seine Markierung bewegen können. Außerdem soll glaub ich immer der Button oben drüber und untendrunter eine andere Farbe habe, aber weis nicht ob ich dass 100% genau verstanden hab
genau.
Der Button drüber und drunter soll einfach nur die Ursprungsfarbe wiederbekommen (was dann zur folge hat das nur der im Fokus anders gefärbt ist).
das skript von oscar funktioniert auch bzw. ändert noch die umliegenden Buttons wie von anno2008 angesprochen.
und ändert sogar noch die button farbe onklick?
Ist auf jeden Fall eine schönere Lösung als meine
Was dagegen wenn ich die Funktionen so einfach abschreibe und anpasse?
Den Hovereffekt kenn ich schon. Hier im Forum hat mal jemand eine vergleichbare und einfachere Lösung gepostet (Beispiel mit 2 buttons):
include <GUIConstants.au3>
Opt("GUICoordMode", 1)
$HauptGUI = GUICreate("HTPC", 400, 600, 1000, 0)
GUISetBkColor(0x000000)
$Button1 = GUICtrlCreateButton("TV", 100, 8, 200, 60, 0)
GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x008080)
$Button2 = GUICtrlCreateButton("DVD", 100, 88, 200, 60, 0)
GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x008080)
GUISetState(@SW_SHOW)
$Hover_Old = ""
While 1
$Cursor = GUIGetCursorInfo($HauptGUI)
If $Cursor[4] <> $Hover_Old Then
Normal($Hover_Old) ; reset the previous control
Hover($Cursor[4]) ; set the new control hovered
$Hover_Old = $Cursor[4]
EndIf
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Endselect
Wend
Func Hover($ID)
Switch $ID
Case $Button1
GUICtrlSetBkColor($ID, 0xFFFF00)
Case $Button2
GUICtrlSetBkColor($ID, 0xFFFF00)
Endswitch
Endfunc
Func Normal($ID)
Switch $ID
Case $Button1
GUICtrlSetBkColor($ID, 0x008080)
Case $Button2
GUICtrlSetBkColor($ID, 0x008080)
Endswitch
Endfunc
Daran angelehnt war auch mein Ansatz. Hab aber auf den Fokus reagiert und nicht auf den Mauszeiger.