1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Pfad zur Datei, die gerade am Bildschirm angezeigt wird auslesen

    • BugFix
    • 13. April 2012 um 14:10

    Ich habe doch schon gesagt, wie es einfach geht. Einfach den Pfad auslesen über das Objekt:

    [autoit]

    $oExcel = ObjGet("","Excel.Application") ; Referenz auf die offene Excelanwendung
    $oBook = $oExcel.ActiveWorkbook() ; das aktive Workbook ermitteln
    ConsoleWrite('Pfad des aktuellen Workbooks: ' & $oBook.Path() & '\' & $oBook.Name() & @CRLF)

    [/autoit]


    Analaog gilt das auch für Word und Access. Welche Methoden/Eigenschaften verwendet werden, verrät uns Tante Google (Suchbegriff: Anwendung Objekt Methoden) ;)

    Damit es multiprogrammfähig ist, brauchst du doch nur versuchen Referenzen auf die unterschiedlichen Objekte zu erhalten. Klappt es nicht, ist auch die Anwendung nicht offen. Kannst du dann einfach per Switch durchwandern.

    Edit:

    Ich hab mal schnell solche Funktion erstellt, kannst du ja noch erweitern. Infos zu den Objekten findest du hier.

    Spoiler anzeigen
    [autoit]

    ConsoleWrite(_GetPathFromApp('Powerpoint') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetPathFromApp($_sApp)
    Local $o
    Switch $_sApp
    Case 'Word'
    $o = ObjGet("","Word.Application")
    If Not IsObj($o) Then Return ''
    Return $o.ActiveDocument.Path() & '\' & $o.ActiveDocument.Name()
    Case 'Excel'
    $o = ObjGet("","Excel.Application")
    If Not IsObj($o) Then Return ''
    Return $o.ActiveWorkbook.Path() & '\' & $o.ActiveWorkbook.Name()
    Case 'Access'
    $o = ObjGet("","Access.Application")
    If Not IsObj($o) Then Return ''
    Return $o.CurrentProject.FullName() ; kann ich mangels Access nicht testen
    Case 'Powerpoint'
    $o = ObjGet("","Powerpoint.Application")
    If Not IsObj($o) Then Return ''
    Return $o.ActivePresentation.FullName()
    EndSwitch
    EndFunc

    [/autoit]
  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 11. April 2012 um 18:18

    Hmm, ich merke schon, da habe ich wohl einiges verschlimmbessert. :wacko:
    Naja, das nächste WE kommt bestimmt, dass ich mich nochmal intensiv reinknien kann.

  • Die letzten Vier Zeichen aus einer String splitten

    • BugFix
    • 11. April 2012 um 18:16

    Nimm doch lieber gleich StringReplace.
    Ansonsten reicht ein Blick in die Hilfe, sehr ausgiebig erklärt.

  • Pfad zur Datei, die gerade am Bildschirm angezeigt wird auslesen

    • BugFix
    • 11. April 2012 um 14:40

    Für Word und Excel kannst du dir mit den UDF direkt die Liste der Fenster geben lassen inklusive Pfade der geöffneten Dateien.

  • Random() mit Tendenz

    • BugFix
    • 11. April 2012 um 09:43

    Wenn deine Anfrage damit erledigt ist, setze bitte in deinem Startpost das Präfix auf "gelöst".

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 10. April 2012 um 22:01

    So Tweaky, nun sollte das auch passen.
    Aber wenn du mehr entdeckst - immer her damit.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 10. April 2012 um 21:06

    Oh, wie peinlich, ein Array-Fehler. :rofl:
    OK, das ist behoben. Aber da läuft nochwas nicht ganz rund. Wenn keine Includes vorhanden sind, arbeitet das Skript, soweit ich das sehe, fehlerfrei. Aber bei bereits vorhandenen Includes paßt es nicht immer.
    Aber ich hoffe, das werde ich noch alles beheben.
    Eure Unterstützung beim Fehler finden hilft da sehr. :thumbup:

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 10. April 2012 um 20:33

    Ahh, Danke. Die Fehlermeldung war wichtig, damit kann ich was anfangen.
    Bist ein guter Tester :thumbup:
    Gleich mal schauen, wie das entstehen kann.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 10. April 2012 um 19:07
    Zitat von Tweaky

    Allerdings wird die "ManageIncludes.lua" nicht überschrieben wenn sie bereits existiert.

    Da hatte ich das Überschreib-Flag vergessen - gefixed.

    Zitat von Tweaky

    Wäre es nicht sinnvoller die Datei die in "...\AppData\Roaming" geschrieben werden in ein Unterordner zu packen, damit man die Dateien später besser zuordnen kann?

    Ich lasse den FileSelectFolder-Dialog mit dem Button "Neuer Ordner" anzeigen, damit das jeder nach eigenem Geschmack handhaben kann. Natürlich ist ein Unterordner sinnvoll. Ich mag es immer lieber, wenn ich dann selbst festlegen kann wie was heißt. ;)

    Zitat von Tweaky

    Die Includes werden immer in die 3. Zeile geschrieben auch wenn in der ersten Zeile Code steht. Ist dies so gewollt?

    Ist jetzt auch gefixed.

    Zitat von Tweaky

    Wenn ich die Tastenkombination erneut drücke verschwinden die Zeilen mit dem include wieder.
    Ich poste es nur noch einmal, da ich nicht weiß ob du schon versucht hast ihn zu beheben

    Diesen Fehler konnte ich noch nicht nachbilden.
    Beschreib mal genau:
    Passiert das bei allen Skripten? Welches OS hast du?
    Bei mir, Win7 Pro 64 passiert das nicht.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 10. April 2012 um 15:06
    Zitat von chesstiger

    Sorry BugFix, aber bei mir ist keine Datei "Install_ManageIncludes.au3", sondern nur


    Hatte ich vergessen mit zu packen, jetzt ist es vorhanden.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 10. April 2012 um 13:46

    Neue (aber noch nicht optimale) Version erstellt.
    - mit Installer auch für Update

  • Alien und VCLua für SciTE

    • BugFix
    • 10. April 2012 um 00:16

    Danke progandy :thumbup:
    Nun kann man auch etwas anspruchsvollere Lua-Bibliotheken im Standard-SciTE nutzen. Ich hatte bisher in der lua.properties auf meine externe Lua-Installation verlinkt, was aber nur auf meinem Rechner sinnvoll ist.
    Na dann schaun wir mal, was sich da noch für interessante Symbiosen ergeben.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 9. April 2012 um 21:52
    Zitat von progandy

    Hi, du solltest bei der Include-Suche noch die Reihenfolge der Suchpfade beachten ;) Bei Anführungszeichen wird zuerst im Skriptverzeichnis, dann in den User-Verzeichnissen und zueltzt im Includeverzeichnis gesucht, bei Klammern umgekehrt.

    Ja, das ist das, was ich mit der Pfadvielfalt meinte. Da bin ich noch am Suchen, wie ich das am elegantesten einbaue.

    Zitat von progandy

    PS: Brauchst du eine FileGetTime-Funktion für LUA? Ich hätte eine mit alien und Windows-API

    Ich habe auch einige Bibliotheken, die ich per Alien nutzen könnte - aber ich habe es noch nicht geschafft Alien mit dem Lua zu nutzen, dass im SciTE integriert ist. Bei mir klappt dass nur, wenn ich auf meine externe Lua-Installation verweise. Insofern für allgemeine Verwendung wenig nützlich.

    Zitat von progandy

    PPS: Kannst du MILua nicht nach @AppData schreiben? Ins SciTE-Verzeichnis ist bei Windows-7 nicht so prickelnd.

    Macht bei mir keine Probleme. Aber wenn das z.Teil Probleme bereitet, soll es daran nicht scheitern.

    Ich erstelle gerade das Installationsskript, inkl. rudimentärem HotKey-Generator. Werde ich hoffentlich noch heute Nacht fertig bekommen. :D
    Aber die Anpassungen mit den Pfaden werden noch etwas dauern.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 9. April 2012 um 14:02
    Zitat von Andy

    Ein Installer würde das Procedere wesentlich vereinfachen....


    OK, werde ich noch erstellen.

    Tweaky:
    Habe jetzt auch die Ursache für die von dir ermittelten Fehler gefunden und beseitigt. Ich probiere mal noch die Pfadgeschichte hinzubekommen und aktualisiere dann (mit Installer).

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 9. April 2012 um 13:46
    Zitat von Tweaky

    Wenn ich die Tastenkombination erneut drücke verschwinden die Zeilen mit dem include wieder. Ist dies so gewollt :?:

    Konnte ich noch nicht reproduzieren.

    Zitat von Tweaky

    dass man bei Änderung der includes die Datei löschen soll, damit diese neu angelegt werden kann. Geht dies nicht automatisch?

    Da muss ich mal testen, wie der Zeitaufwand ist. Vermutlich erheblich, insofern eine nicht sehr optimale Variante.

    Zitat von Tweaky

    in welchen Ordner die Datei liegen die geändert werden müssen.

    Zitat von BugFix

    Die Dateien liegen alle im Ordner: "..SciTE\Lua\MILua\"

    Die Bsp. werde ich mal testen, Danke schon mal fürs Probieren.

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 9. April 2012 um 13:29

    Bug gefixed.
    Aktuelle Version: v0.13

  • ManageIncludes - Includeorganisation in SciTE mit Lua-Skript

    • BugFix
    • 9. April 2012 um 01:26

    Hi,
    ich hatte ja schon mein 'Osterei' für euch angekündigt:
    hier nun mein erstes größeres Projekt mit Lua: ManageIncludes

    Sicher kennt ihr OrganizeIncludes von Xenobiologist. Damit lassen sich die Includes für das aktuelle Skript in SciTE ermitteln und einfügen.
    Das tut auch mein Lua-Skript. Mit einem wesentlichen Unterschied:
    Lua ist deutlich schneller als AutoIt. Selbst für ein 20.000 Zeilen-Skript habe ich unter einer Sekunde beim Testen benötigt.
    Weiterhin ermittele ich die rekursiv eingebundenen Includes (Includes aus den Includes aus den Includes...), was zu einer Reduzierung der Includes im Skript führt.
    Beim erstmaligen Start des Skripts werden Dateien erstellt mit Zusammenstellung von Funktionen und Konstanten der existierenden Includes (Prod, sofern installiert Beta, wenn in den properties angegeben: User-Includes). Das dauert etwas länger, je nach Rechner bis zu 6..8 Sekunden.Die Dateien liegen alle im Ordner: "..SciTE\Lua\MILua\". Ab jetzt könnt ihr beim Installen/Updaten das Verzeichnis selbst wählen. Vorgabe bei Auswahl ist @AppData.
    Wenn ihr Veränderungen bei Prod/Beta/User-Includes habt, einfach die Dateien in diesem Ordner löschen. Beim nächsten Skriptaufruf wird, wie beim ersten mal, alles neu erstellt. Ein Auto-Updater ist in Arbeit.
    Eine genaue Beschreibung des Skriptes findet ihr auch im Skriptheader.
    Nebenbei bekommt ihr noch in die Konsole ausgegeben:
    - alle deklarierten Funktionen
    - verwendete Konstanten und Funktionen mit zugehörigem Include
    - Includes im Skript
    - Erforderliche Includes für das Skript
    - Includes, die per Rekursion eingebunden sind
    - Nicht benötigte Includes
    - Fehlende Includes

    Die Includes werden nach folgender Priorität eingefügt (ist ein Punkt nicht zutreffend greift der nächste):
    1. Eintrag an Position nach String der in den properties hinterlegt ist (s. Installations-Info)
    2. Eintrag an der Position des ersten gefundenen Includes
    3. Eintrag nach letzter Kompilerdirektive (#AutoIt3Wrapper..)
    4. Eintrag am Skriptanfang

    Wichtig: Schreibt bitte keine Includes in Zeile 1! gefixed


    ----------------------------------------------------------------------------------------------------------------------------------
    -- Installation oder Update
    --
    -- "ManageIncludes.lua" und "shell.dll" zusammen mit Installationsskript "Install_ManageIncludes.au3" in einen Ordner packen
    -- "Install_ManageIncludes.au3" ausführen
    -- Bereits vorhandene Installationsdaten werden übernommen und können konfiguriert werden
    -- Keinerlei Einträge von Hand erforderlich
    ----------------------------------------------------------------------------------------------------------------------------------

    Ich habe das Skript mehrfach um- und ausgebaut (was ihr auch an der hohen Versionsnr. seht). Da kann sich durchaus auch mal ein Fehler eingeschlichen haben.
    Sollte das Skript also mal mit einem Fehler abbrechen, bitte mir die Fehlermeldung posten. Eigentlich sollte maximal ein nicht abgefangener 'nil'-Wert so etwas verursachen.
    Also testet fleißig und gebt mir Rückmeldung.

    Das Skript poste ich dieses mal nicht (> 800 Zeilen). Es ist zusammen mit der shell.dll im Anhang.

    Edit 09.04.2012
    Da hatte sich noch ein Kopierfehler eingeschlichen für den propertie-Eintrag der Stringdefinition (s. Durchgestrichenes in Installationsanleitung).

    Edit 09.04.2012 #2
    - Habe noch einen Bug entdeckt, wenn kein Include im Skript - gefixt.
    - Etwas Codekosmetik durchgeführt.
    Das Pfadproblem ist etwas tricky und wird noch dauern.
    Aktuelle Version: v0.13

    Edit 10.04.2012
    Das Skript ist noch nicht optimal, ein paar Fehler habe ich beseitigt.
    Neu: Installationsprogramm, auch um bereits vorhandene Version upzudaten. Bereits verwendete Einstellungen werden erkannt und übernommen.
    Install_MI.zip enthält den Ordner mit Install_ManageIncludes.au3, ManageIncludes[v0.14].lua und shell.dll
    Einfach die .au3 aus dem Ordner heraus ausführen, sowohl bei Erstinstallation, als auch bei Update.
    Aktuelle Version: v0.14

    Grr, jetzt hatte ich vergessen das Installationsskript mit zu packen. :wacko:
    Jetzt separat im Anhang
    Nun mit verpackt.
    Im Installer war noch ein kleiner Fehler beim Lesen des Include-Types. Aber jetzt paßt es.

    Noch mal aktualisiert
    - Installer hatte alte ManageInclude.lua nicht überschrieben
    - jetzt werden Includes (wenn keine andere Eigenschaften festgelegt sind) in die erste Zeile geschrieben

    Und ein weiteres Fehlerchen gefixed.
    Aktuelle Version: v0.16

    Und noch eine Korrektur.
    Aktuelle Version: v0.17

    ==== ToDo ====
    Da ich die Include-angaben immer streng trenne (aus Prod-/Beta-/Userverzeichnis eingefaßt in < >, andere Includes mit absolutem Pfad in Quotierung), hatte ich bisher nicht berücksichtigt, dass z.B. Pfade im aktuellen Skriptordner nur mit Angabe des Dateinamens möglich sind. Ebenso ist die Verwendung von Quotierung oder < > variabler als mir lieb ist. :whistling:
    Diese Fälle werden also im Moment noch nicht berücksichtigt, hierfür werde ich noch eine Pfadauflösung implementieren.
    ==============

    DL bisher: 30

    Dateien

    Install_MI.zip 52,86 kB – 520 Downloads
  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 8. April 2012 um 16:13

    Änderung in AutoIt-Version 3.3.8.0 macht folgendes erforderlich:

    [autoit]

    ; statt:
    $FORMATLV_oPARAM_SEARCH.Add( ..., ...)
    $FORMATLV_oPARAM_SEARCH.Item( ..., ...)
    $FORMATLV_oPARAM_SEARCH.Remove( ..., ...)

    [/autoit][autoit][/autoit][autoit]

    ; den ersten Parameter als String übergeben:

    [/autoit][autoit][/autoit][autoit]

    $FORMATLV_oPARAM_SEARCH.Add( String(...), ...)
    $FORMATLV_oPARAM_SEARCH.Item( String(...), ...)
    $FORMATLV_oPARAM_SEARCH.Remove( String(...), ...)

    [/autoit]
  • autoitObject auf Attribute zugreifen

    • BugFix
    • 6. April 2012 um 23:23

    Die Lösung hatte ich dir schon in der SB genannt: Statt Eval nimm Execute. Damit kannst du variabel Methoden oder Eigenschaften aufrufen. Habe ich auch schon so in AutoIt-Objekt verwendet.

  • autoitObject auf Attribute zugreifen

    • BugFix
    • 6. April 2012 um 14:06

    Ich verstehe nicht, was du vorhast.
    Du kannst doch nicht drei verschiedene Werte als Typ übergeben.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™