Ja, habe die Hilfe nochmals durchgelesen und wenn man HKCU64 hinterlegt, wird der Wert auch mit der X86-Version korrekt geschrieben.
Danke nochmals!!
Ja, habe die Hilfe nochmals durchgelesen und wenn man HKCU64 hinterlegt, wird der Wert auch mit der X86-Version korrekt geschrieben.
Danke nochmals!!
Hey AspirinJunkie
Diese Option habe ich nicht in Betracht gezogen, weil "HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" mir nicht architekturspezifisch aussah...
Die Änderung des oben genannten Wertes funktionierte nun über alle drei Methoden, nachdem ich diesen über die X64-Version des Programmes setzen habe lassen.
Vielen herzlichen Dank für den Tip!!
Hallo Community,
zuletzt konnte ich einige Fälle beobachten, in denen von AutoIT-Programmen angestoßene Registry-Änderungen effektiv nicht "dort geändert" werden, wo es an sich sein sollte.
Auf die Thematik kam ich, da ich unter Windows 10 OneDrive im Explorer deaktivieren wollte.
Dafür muss beispielsweise der Key "System.IsPinnedToNameSpaceTree" im Zweig "HKEY_CLASSES_ROOT\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" auf "0" gesetzt werden.
An sich eine simple Geschichte, aber keine der von mir über AutoIt-Programme in die Wege geleiteten Änderungsversuche führte zum Erfolg:
- direktes Ändern per "RegWrite"
- Ausführen einer vorgefertigten Registry-Datei (regedit.exe /s)
- Ändern des Wertes über den "REG ADD"-Befehl
Über RegShot habe ich dann ermittelt, dass statt des oben genannten Keys die Werte von folgenden beiden Keys geändert werden:
HKU\S-1-5-21-1378026724-2922080225-1258191866-500\SOFTWARE\Classes\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\System.IsPinnedToNameSpaceTree: 0x00000000
HKU\S-1-5-21-1378026724-2922080225-1258191866-500_Classes\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\System.IsPinnedToNameSpaceTree: 0x00000000
Führe ich den Import über die im zweiten Fall beschriebene Registry-Datei aber manuell über einen simplen Doppelklick aus, so wird der Key korrekt gesetzt.
Mir scheint es so, dass Windows hier das Setzen von Keys über Programme "anders" handhabt als es dieses bei einer direkten Benutzeraktion tut.
Hat jemand eine Idee, wie man diesen Sachverhalt lösen kann?
P.S.: Der auf dem Testsystem verwendete Benutzer war "Administrator", Berechtiungsprobleme sind somit nahezu auszuschließen.
Grüße,
Tupac
Danke dir!
Ca. 20 Sekunden nach dem Post stieß ich auch auf @ScriptFullPath...
Hallo Leute,
habe da eine hoffentlich kleine Anfrage: ich möchte den aktuellen Pfad, aus dem das komplilierte AutoIT-Script heraus gestartet, wird ermiteln. Gibt es dazu eine Funktion oder einen Befehl?
Hintergrund: in meinem Fall muss ich unter gewissen Umständen (z.B. wenn Ordner xyz fehlt) ein zweites Script starten, damit dieses den fehlenden Ordner anlegt. Im Anschluss soll aber das erste Script wieder gestartet werden...dieses kann das zweite theoretisch problemlos machen, wenn es wüsste wo die entsprechende EXE liegt
Ich stelle mir folgenden Ablauf vor: Script 1 startet und stellt fest, dass z.B. Ordner c:\Temp fehlt. Es schreibt in eine Datei X seinen aktuellen Pfad, startet Script 2 und beendet sich. Script 2 startet, legt Ordner c:\Temp an, ermittelt aus der von Script 1 zuvor erstellten Datei den Pfad der EXE des 1. Scriptes und startet dieses...
Mir ist klar, dass Script 1 den Ordner auch erstellen könnte bzw. definitiv kann.
Ich habe aber das Problem, dass dabei eine der vom 1. Script eingesetzten Funktionen nicht richtig läuft...der Ordner wird erstellt, aber Teile externer Software laufen trotzdem nicht wirklich...so als ob der Ordner nicht wirklich existieren würde...dieses Problem konnte ich nur beheben, wenn ich den gewünschten Ordner zuvor über ein externes Script gestartet habe.
Danke für jeden Tip!
Hallo Leute,
stehe hier vor einem kleinen Problem: habe hier ein Script, welches eine MsgBox öffnet und dem Benutzer eine Meldung anzeigt. Nun kann es ja durchaus sein, dass der Benutzer z.B. mitten beim Verfassen einer Email ist und die hochkommende Meldung beim Eintippen versehentlich mit Enter oder Space beendet.
Gibt es eine Möglichkeit über AutoIT einen Zeitraum X (z.B. 10 Sekunden) auf Eingaben zu überwachen und die nächste Aktion (MsgBox) erst dann auszuführen wenn die eingestellte Zeit keine Tasteneingaben getätigt wurden? Mausklicks wären egal, wichtig ist nur, dass der Benutzer nicht mitten in einer Texteingabe steckt.
Noch eine zweite Frage: gäbe es eine Möglichkeit das MsgBox-Fenster eine definierte Zeit geöffnet zu lassen, obwohl in diesem bereits z.B. auf "OK" geklickt wurde? Einfach, um den Benutzer zu "zwingen" sich die Meldung genauer durchzulesen.
Danke & Gruß,
Tupac
Hey BugFix,
dein Script ist ja genau das was ich gesucht habe
Super umgesetzt, arbeitet wie gedacht.
Ist aber ne tolle Community hier, hätte ich gar nicht gedacht!!
Grüße
Danke schon mal für den Hinweis.
Werde aber vermutlich erst heute Abend oder morgen im Laufe des Tages dazu kommen, mich im Detail einzulesen. Werde aber davon hier berichten
Hallo zusammen!
Soeben bin ich in meinem Programm an einen Punkt gestoßen, bei dem ich nicht sicher bin, wie man das Problem mit AutoIT am elegantesten lösen könnte.
Und zwar habe ich ein mehrdimensionales Array, welches ich "bearbeitbar" machen möchte.
Die Inhalte dieses Arrays sollen in einer Gui (ähnlich wie bei _ArrayDisplay, vielleicht noch mit spezieller Beschriftung der Spaltenüberschriften sowie regelbaren Spaltenbreiten) dargestellt werden.
Der Benutzer soll dann eine Zeile anklicken können und über einen "Bearbeiten"-Button könnte die gesamte Maske bearbeitbar werden, so dass man Änderungen vornehmen kann.
Über einen "Speichern"-Button könnten die Feldinhalte dann neu eingelesen und neu in das Array geschrieben werden.
Sollte dieses so einfach nicht möglich sein, so wäre bei einem Klick auf den "Bearbeiten"-Button auch denkbar, dass die Einträge des angeklickten Arrays in eine neue Gui geladen werden und dieses Arrayelement separat abgehandelt wird.
Gibt es da evtl. schon vorgefertigte Codeschnippsel? Es muss ja gar nicht groß optisch hergemacht werden, eine leicht aufpolierte _ArrayDisplay-Ansicht würde mir ja schon reichen.
Danke schon mal vorab.
Grüße
Bin mal über die "gute alte" Methode auf die Suche gegangen: die Probleme fangen nach "|Stone Brick Stairs" an...egal welchen Text man ab da dranhängt: der Fehler tritt im Anschluss gut reproduzierbar immer wieder auf!
Also kein Syntaxfehler, sondern die Begrenzung
Danke euch beiden für die Lösungen bzw. den Ansatz
Bin kurz nach dem Post auf einen Hinweis gestoßen, der mein Problem auch auf relativ einfachem Weg löst. Leider war mein Beitrag in der "Prüfung durch einen Moderator", so dass ich ihn nicht mehr entfernen konnte.
Auf jeden Fall die weitere Möglichkeit: so wie ich es verstanden habe, kann man über "GUICtrlSetState($Button1, $GUI_DEFBUTTON)" den Focus direkt auf den Button legen.
Wenn man dann in der ComboBox etwas eingibt und "ENTER" betätigt, startet automatisch die gewünschte Anwendung als wenn man den Button anklicken würde.
Klappt in der Praxis tatsächlich bisher problemlos.
Danke auf jeden Fall uns bis bald
Grüße
Hallo zusammen!
Bin bereits seit einer gewissen Zeit am scripten per AutoIT, nun aber mit einer kleinen Gui-Anwendung an meine Grenzen gestoßen.
Und zwar habe ich eine ComboBox erstellt aus der der Benuzer entweder per Dropdown-Menü oder aber per Eingabe eines Buchstabens einen der Einträge auswählen kann. Hat er die Auswahl erledigt, so kann er über einen Klick auf den Button "Starten" die ausgewählte Datei starten.
[Blockierte Grafik: http://imageshack.us/photo/my-images/828/combobox.jpg/]
Er soll aber ebenso nach Auswahl eines Eintrages über die ENTER-Taste die Anwendung starten können. Und genau da hakt es: habe mich schon durch diverse Forenbeiträge gewälzt, IF-Abfragen bzgl. "_IsPressed" eingebaut, aber viel weiter komme ich nicht. Schalte ich eine IsPressed-Abfrage vor oder nach der GUIGetMsg() wird die Anwendung u.U. zwei- oder dreifach gestartet (wenn der Focus z.B. auf dem Button liegt).
[autoit]While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $GUI_EVENT_MINIMIZE
MsgBox(0, "", "Dialog minimized", 2)
Case $msg = $GUI_EVENT_MAXIMIZE
MsgBox(0, "", "Dialog restored", 2)
Case $msg = $Button1
[/autoit][autoit][/autoit][autoit]ShellExecute ($starteAnwendung)
[/autoit][autoit][/autoit][autoit]EndSelect
[/autoit][autoit][/autoit][autoit]WEnd
[/autoit]Habt ihr eine Idee wie ich dieses Problem lösen kann?
Vielen Dank & Gruß