Beiträge von fee

    Micha_he :

    Vielen Dank für deine Anleitung. Endlich bin ich mal dazu gekommen, zumindest die genannten Werte in der Registry zu überprüfen.

    Zu 1: Bei mir steht unter Progid der Wert Applications\AutoIt3.exe statt AutoIt3Script – falsch.

    Zu 2: Unter (Standard) steht AutoIt3Script – richtig. Als PerceivedType ist dort noch text definiert.

    Zu 3: Dort ist unter (Standard) der Wert AutoIt3Script angegeben und ebenfalls ein PerceivedType mit text.

    Zu 4.1: Die "Progid" AutoIt3.exe ist bei nur unter HKEY_CURRENT_USER\Software\Classes\Applications vorhanden, worunter es auch ein …\AutoIt3.exe\shell\open\command gibt, jedoch nirgendwo ein DefaultIcon – falsch. Für die (Standard)-Einträge in shell und open ist nur (Wert nicht festgelegt) zu finden.

    Zu 4.2: Dort ist der Schlüssel AutoIt3Script notiert mit allen Unterschlüsseln und Werten, wie es sich gehört.


    Weil aber in der Zwischenzeit auch andere Programme nach der Installation ihr Dateityp-Symbol nicht setzen oder sich nicht im Explorer-Kontextmenü eintragen konnten, gebe ich diesen Schwachsinn mit der Benutzerkontensteuerung auf, mache mein eingeschränktes Benutzerkonto zum Administrator und lösche das derzeitige Administratorkonto. "Sicherheitsgewinn" ade, aber dafür Funktionalität und weniger Ärger bzw. Zeit vertan, obwohl mir das Aufgeben nicht schmeckt.

    Trotzdem danke ich euch allen für eure Mühe und Hilfe.


    Gruß, fee

    Alina : Grob gesagt schaut sein Skript, ob eine RNS-Datei im angegebenen Ordner erstellt oder geändert wurde und stellt über ein Dummy-Steuerelement die Dateigröße für Debugzwecke zur Ausgabe in die SciTE-Konsole bereit. Vorbereitet sind auch schon jene Aktionen, wenn du noch etwas beim Umbenennen oder einer Dateitypzuweisung erledigten lassen möchtest. Ansonsten hat er nur noch die Umwandlungsfunktion und beim Beenden des Skriptes das Deregistrieren der Überwachungsfunktion eingebaut.

    Eigentlich nichts Wildes und relativ einfach, wenn man es irgendwann mal verstanden hat. Bei welchem Teil blickst du noch nicht durch?

    Bitnugger :

    den alten Namen bekommst du mit "Item1", den neuen mit "Item2".

    Okay, das wusste ich nicht.

    Wir benötigen ja nicht nur den Namen des Pfades, sondern vor allem auch den Inhalt der Datei... den es aber evtl. noch nicht gibt, nachdem die Datei erstellt wurde ($SHCNE_CREATE) - z.B. mit FileOpen("filename.rns", $FO_OVERWRITE) - hier greift dann $SHCNE_UPDATEITEM, nachdem die Daten geschrieben wurden!

    Ups, das hatte ich nicht bedacht.

    jedoch kein $SHCNE_ASSOCCHANGED.

    Das habe ich mit reingenommen, weil in der Beschreibung steht:

    This event should also be sent for registered protocols.

    Muss ich dann wohl missverstanden haben. Ein Dateityp ist ja kein Protokoll, oder?

    Schau mal hier, wie KaFu das gelöst hat.

    Uff, den *_Lock und *_Unlock-Teil hätte ich vielleicht noch hinbekommen können, aber allerspätestens bei _WinAPI_ShellChangeNotifyRegisterEx wäre für mich Schluss gewesen.

    Ansonsten... sehr schön umgesetzt. :rock:

    Danke dir. :) Deine neue Version ebenso!


    Alina :

    Das Anzeigen das eine neue Datei im Ordner ist erfolgt bei mir nicht. Die GUI baut auf, aber sie füllt sich nicht, sobald eine weitere Datei in den Ordner kommt.

    Klar, weil Bitnugger kein Edit-Element wie ich in die GUI eingebaut hat und Meldungen zum Debuggen in der SciTE-Konsole ausgeben lässt, sofern das Skript von SciTE aus gestartet wurde.

    Alina : Gern geschehen! :)


    Bitnugger : Die Ordnerüberwachung wäre vermutlich toll, aber

    1. fehlt ein #include <GUIConstantsEx.au3> (nicht schlimm) und
    2. bekomme ich unter Win7 Pro x64 nur ein Event: 0x00040000 nach Hinzufügen einer RNS-Datei im Ordner.

    Leider verstehe ich (noch) nicht, warum.


    Edit:

    Bitnugger : So funktioniert es jetzt bei mir auf Win7 Pro x64, wenn ich eine RNS-Datei im zu überwachenden Ordner erstelle:

    Eine RNS-Datei in einen andernen Dateityp umbenennen würde erkannt werden, umgekehrt jedoch nicht. $SHCNE_ALLEVENTS kann somit vom Erkennungsumfang her auf BitOR($SHCNE_ASSOCCHANGED, $SHCNE_CREATE) reduziert werden. Die rekursive Erkennung habe ich auch entfernt, um Leistung einzusparen. $SHCNE_UPDATEITEM tritt laut Beschreibung nur bei Veränderung des Inhaltes eines Elementes auf, hier also nicht nötig. $SHCNE_CREATE habe ich aus der Funktion _WM_SHELLCHANGENOTIFY() entfernt.

    Die Beschreibung zu SHChangeNotifyRegister empfiehlt statt BitOR($SHCNRF_INTERRUPTLEVEL, $SHCNRF_SHELLLEVEL) den Wert $SHCNRF_NEWDELIVERY in der Funktion _WinAPI_ShellChangeNotifyRegister():

    Messages received use shared memory. Call SHChangeNotification_Lock to access the actual data. Call SHChangeNotification_Unlock to release the memory when done.

    Note: We recommend this flag because it provides a more robust delivery method. All clients should specify this flag.

    Den ersten Zitatsatz weiß ich leider nicht vollständig umzusetzen. Macht aber nix, für mich funktioniert es auch so.

    fee wandelt die 100 in 00 um und auch umgekehrt ! Das ist ja auch richtig. Bei den anderen Lösungen wird auch die 100 in 00 umgewandelt, aber umgekehrt kommt dann nicht wieder 100 raus.

    Am Anfang schriebst du, dass die Eingabezeichenfolge nur zweistellige Zahlen enthält. Finde ich zwar schön, dass mein Vorschlag deine erweiterte Aufgabe richtig löst, was aber nicht von mir beabsichtigt und vor allem nicht ganz deine Aufgabenstellung war. ;)

    Naja, besser so als anders herum. :)

    Bei der Ordnerüberwachung kann ich dir allerdings nicht helfen, das habe ich noch nie gebraucht/gemacht.


    Edit: Den Mod()-Teil in meinem Vorschlag würde ich allerdings durch den Vorschlag von Bitnugger in Beitrag #10 ersetzen, also der For-Schleife ein Step 2 verpassen und danach die letzte Doppelziffer an ungerader Position (sofern vorhanden) verarbeiten. Spart Laufzeit, denn Modulo ist leistungshungrig.

    Hallo Alina ,

    hier mein Vorschlag mit einem Array, erstellt aus dem Code von Musashi , der eine sehr gute Vorlage lieferte:

    Dieser Code könnte jedoch langsamer, aber vielleicht leichter verständlich sein.

    Gruß, fee

    gmmg : Gibt es etwa noch einen anderen Administrator-Kontotyp als "lokal"?

    Die Skripte öffne ich ja auch in ScitTE, derzeit halt über "Öffnen mit → SciTE - a Scintilla based Text Editor modified by Jos for AutoIt3." statt einfach über "Edit Script", weil das nicht im Kontextmenü erscheint:

    Meine AutoIt3-Skript-Symbole sahen vorher mit "Perceived Type" so aus:

    Und nachher ohne "Perceived Type" so:

    Das ist jedoch nicht das AutoIt-eigene Symbol wie bei dir in Beitrag #5, worauf bei mir in der Registrierung aber korrekt verwiesen wird und auch die Kontextmenü-Einträge vorhanden sind:


    Moombas : Ja, du erinnerst dich richtig! Der AutoIt3-Installer hat das schon so eingestellt und ich später auch noch mal.


    Micha_he : Danke, das wusste ich nicht. Den Schlüssel HKEY_CURRENT_USER\Classes gibt es bei mir allerdings nicht. Meinst du vielleicht HKEY_CURRENT_USER\Software\Classes?

    Den letzten Schlüssel aus deiner Liste habe ich gefunden. Darin ist allerdings kein Wert vorhanden, sondern nur die Unterschlüssel OpenWithList, OpenWithProgids und UserChoice. OpenWithProgids enthält noch die REG_NONE-Werte AutoIt3Script und au3_auto_file. Letzterer kommt mir seltsam vor, weil er in HKEY_CLASSES_ROOT nicht mehr vorhanden ist.


    Seltsame Geschichte, das Ganze. Euch allen vielen Dank für eure Mühe!

    Vielen Dank erst mal für eure Antworten.


    gmmg : Ja, habe ich. Das Problem scheinen mir die Zugriffsrechte/Berechtigungen auf die Dateien/Ordner des AutoIt3-Installations-Ordners zu sein, denn im Registrierungs-Editor setzte ich in HKEY_CLASSES_ROOT\.au3 den Standard-Eintrag auf AutoIt3Script und damit auf den gewünschten Schlüssel in HKEY_CLASSES_ROOT, worin alle Einträge für Symbol und Kontextmenü vorhanden sind. Kurioserweise verwies HKEY_CLASSES_ROOT\.au3 mal auf au3_auto_file, dessen Schlüssel aber mittlerweile nicht mehr existiert. Warum auch immer, denn gelöscht habe ich ihn nicht.

    Dafür erscheint mittlerweile bei den Skriptdateien (*.au3) wenigstens das AutoIt3-Symbol auf einem weißen Blatt Papier, allerdings von Windows zusammengesetzt, kommt aber dem eigentlich zugewiesenen Symbol recht nahe. Vermutlich, weil ich unter HKEY_CLASSES_ROOT\.au3 den REG-SZ-Eintrag PerceivedType gelöscht habe, welcher auf text gesetzt war.

    Irgendwie verstehe ich entweder das Konzept der Berechtigungen nicht (ganz) oder Billy hat hier Murks gebaut. Da lässt sich auch extrem viel einstellen und verbocken, dass einem schwarz vor Augen werden könnte. Es kommt mir so vor, als würden Billys Betriebssysteme für andere (Hacker, Viren) sicherer werden und man selbst wird zunehmend ausgeschlossen, wenn man keine überdimensionale Zielscheibe darstellen möchte oder studiert hat, aber ich schweife ab …


    Moombas : Im Explorer öffnet sich damit zwar bei Doppelklick oder Enter das Skript in SciTE, aber zum Ausführen des Skriptes muss ich "Öffnen mit" → "AutoIt v3 Script" aus dem Kontextmenü wählen. Außerdem ändert sich das Skriptdateisymbol bei mir auch nicht nach einem Neustart.


    Kennt sich jemand tiefgreifend mit Berechtigungen aus, falls es daran liegen sollte, vielleicht auch in der Registry?

    Oder anders gefragt: Wie habt ihr AutoIt3 installiert und wie nutzt ihr es? Im Administrator- oder im Standardbenutzerkonto? Habt ihr das passende Symbol im Explorer bei den Skriptdateien (*.au3)? Nutzt ihr das dazugehörige Kontextmenü oder macht ihr es wie Moombas?


    Gruß, fee

    Hallo Leute,


    wenn ich AutoIt3 unter Windows 7 Professional von einem eingeschränkten Benutzerkonto (Standardbenutzerkonto) aus installieren will, verlangt die Benutzerkontensteuerung das Administratorkonto und das Passwort, was ja soweit in Ordnung ist, weil ich beides habe, ist schließlich mein PC. Auch SciTE4AutoIt3 wird vollständig installiert.


    Nach der Installation kann ich dann zwar nach anwenden dieser Anleitung

    • SciTE4AutoIt3 nach meinen Bedürfnissen einstellen,
    • auch Kürzel lassen sich in SciTE4AutoIt3 erweitern (nti wird richtigerweise zu #NoTrayIcon) und
    • Skriptdateien (*.au3) lassen sich vom Explorer aus per Enter oder Doppelklick ausführen,

    aber

    • die Skriptdateien (*.au3) besitzen kein AutoIt-Symbol,
    • in den Explorer-Kontextmenüs sind keine Einträge zum Kompilieren vorhanden und
    • zum Bearbeiten öffnet sich der Editor (Notepad) statt SciTE4AutoIt3.

    All diese Punkte funktionieren hingegen im Administratorkonto problemlos!


    Hat jemand eine Idee, wie ich diese Komfort-Funktionen auch im Standardbenutzerkonto verfügbar machen kann?


    Die Installation im öffentlichen Ordner (gemeinsame Dateien?) oder im Benutzerordner unter …\Roaming haben auch nichts gebracht, im Gegenteil, AutoIt-Skripte (*.au3) konnten dann nicht mal ausgeführt werden.


    Gruß, fee

    BugFix , vielleicht kann dir der AutoHotkey-Quellcode von NoClose weiterhelfen, der dort im Download enthalten ist, um neben dem Ausgrauen des Close-Buttons wie bei autoBerts Vorschlag auch noch die System-Menü-Einträge zu verstecken, was dich deinem Ziel noch etwas näher bringen würde.


    Gruß, fee

    Dito, aber leider funktioniert das nur bei Pfaden korrekt, die einen Dateinamen mit oder ohne Erweiterung beinhalten. Gibt man nur einen Ordner an, so wird dieser zurückgegeben, statt eine leere Zeichenfolge. Ein abschließender Gegenschrägstrich hat keine Auswirkung aufs Ergebnis.

    Könnte man mit AutoIt ohne Weiteres (wenn überhaupt) die .NET-API verwenden, wäre es vermutlich mit der Methode Path.GetFileName möglich, den Dateinamen ohne Dateiendung zu erhalten und man müsste nicht auf die Funktion _PathSplit() zurückgreifen, welche für meinen Geschmack zu viele Variablen benötigt, aber wenigstens kein Problem mit reinen Ordnerpfaden hat, sofern diese mit einem Gegenschrägstrich abgeschlossen sind. Oder man nimmt den Code von Yjuq aus Beitrag #3, der für diesen Zweck auch wunderbar funktioniert.


    Gruß, fee

    Hallo Musashi .

    Bei mir funktionierte das kompilierte AutoIt-Skript auf Win XP SP3 – wie in deinem Eröffnungspost beschrieben – aus der .cmd-Batch heraus einwandfrei.

    Einige getestete Exit-Werte (natürlich ohne die Punkte) von -2.147.483.648 (-2^31) über 0 bis +2.147.483.647 (+2^31-1) wurden fehlerfrei und klaglos in der Eingabeaufforderung angezeigt. Alle getesteten Exit-Werte unter oder über diesen Grenzwerten wurden auf diese von der Konsole "zurechtgestutzt".

    Für meine Tests war es egal, ob das AutoIt-Skript mit #AutoIt3Wrapper_Change2CUI=n oder #AutoIt3Wrapper_Change2CUI=y kompiliert wurde, denn beide funktionierten gleichermaßen richtig und fehlerfrei.

    Gruß, fee

    alpines :

    Okay, danke! Dann lasse ich meine Beiträge so, wie sie sind. :)


    Musashi :

    Auch dir vielen Dank für deine Mühe, mir all das so ausgezeichnet zu erklären! :)

    Die Extrabenachrichtigung in deinem Beitrag #12 hat geklappt. :thumbup:

    Das direkte Schreiben des Benutzernamens zusammen mit der Pickliste ist ja echt VIEL bequemer als meine Arbeitsweise zuvor. 8)


    Gruß, fee

    Wenn ihr User mittels @-Zeichen und Name direkt ansprecht, müsst ihr auf die Schreibweise achten.

    Ja, das ist mir auch "schon" aufgefallen.


    Nur dann erhält der User, soweit ich weiß, eine gesonderte Benachrichtigung/Notification (siehe Glockensymbol im Header der Website).

    Das ist auch meine Vermutung. Die Benachrichtigungsfunktion nutze ich ja selbst, weil komfortabel und logisch.


    Beim Schreiben des Usernamens erscheint i.d.R. eine Pickliste.

    Ja, aber wenn ich da draufklicke, schaut die Direktansprache im Editor nicht nach einem Link aus.


    So kann man übrigens auch ältere Beiträge editdieren, falls man nur speziellen Userb eine Notification zukommen lassen möchte.

    Du meinst in etwa dieser Form: Edit @User: Das hat sich geändert?


    Hat man es richtig gemacht, dann erscheint (bei versendeten Beiträgen) ein Kurzprofil, wenn man den Mauspfeil auf dieses Element plaziert …

    So sollte es eigentlich sein, ja. Aber offensichtlich kann man es auch gründlich falsch machen, sorry! ?(


    Der Forumseditor reagiert je nach Art der Eingabe unterschiedlich …

    Und da liegt auch vermutlich auch der Fehlerhund begraben: Es kommt wahrscheinlich auf eine ziemlich genaue Vorgehens-/Schreibweise an, sonst ist der Link der Direktansprache zerstört.


    Wie gehst du denn dabei bevorzugt vor? Hast du ja schon beschrieben.


    Bisher kopierte ich immer erst den Benutzernamen von unterhalb des jeweiligen Avatars und fügte ihn nach dem @ ein. Ich war bisher der Meinung, dass damit die Direktansprache inklusive Benachrichtigung funktioniert hat, aber offensichtlich ja nicht! ;(:cursing:


    Deshalb danke ich dir, Musashi , für den Hinweis! :)


    Gruß, fee


    Edit: Ach, deshalb habt ihr immer so hässliche Abstände um die Direktansprache herum, weil es in diesem Forum so sein muss. Und ich dachte schon, ihr mögt eure Leertaste besonders gerne! :P


    Edit 2 Musashi : Wenn ich nun die Direktansprachen in meinen anderen Beiträgen korrigieren würde, würde das vermutlich unnötige Benachrichtigungen nach sich ziehen, oder?


    Edit 3 Musashi : Letzte Frage zurückgenommen. Die erste aber nicht.

    Danke für eure Hilfe …

    @Silvermoon1: Bitte, gerne. :)


    … habe mit „_MouseTrap“ das Auslangen gefunden.

    Damit beschränkst du aber nur den Bewegungsbereich der Maus, sonst nichts. Sofern du nicht einen der anderen Lösungsansätze hier verwendest, kann deine Zugriffsbegrenzung mit der Tab-Taste locker umgangen werden.


    der Block kann geschlossen werden

    Das darfst/kannst du sogar selbst umsetzen: :)

    1. Hier anmelden/einloggen.
    2. Oben rechts vom Thementitel auf Thema bearbeiten linksklicken.
    3. Im Kontextmenü Erweitert auswählen.
    4. Im Fenster unter Labels auf Keine Auswahl linksklicken.
    5. In der Liste [ gelöst ] auswählen.
    6. Auf Speichern linksklicken.
    7. Nochmals auf Thema bearbeiten linksklicken.
    8. Im Kontextmenü Als erledigt markieren auswählen.

    Aber warte nicht zu allzu lange nach dem letzten Beitrag, sonst kannst du diese Einstellungen möglicherweise nicht mehr vornehmen.


    Gruß, fee

    @Silvermoon1: Für den Fall, dass dir @Bitnuggers Beispiel zu kompliziert erscheint, könntest du stattdessen einfach alle anderen GUI-Elemente wie Eingabefelder oder Tab-Reiter außer dem Alterseingabefeld nach Erzeugung deaktivieren und/oder ausblenden ($GUI_HIDE), mit einer Booleschen Variable (False, True) arbeiten und abfragen, ob der eingegebene Wert dem Mindestalter entspricht. Ist diese Bedingung erfüllt, kannst du alle anderen GUI-Elemente wieder aktivieren und/oder einblenden ($GUI_SHOW), also freischalten.


    Zum Beispiel so:


    Gruß, fee