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. Bitnugger

Beiträge von Bitnugger

  • Lua - Grundkenntnisse

    • Bitnugger
    • 5. Oktober 2020 um 21:06
    Zitat von Professor Bernd

    #~ "ext.lua.startup.script=..." muss als erstes in der SciTEUser.properties
    #~ stehen, weil alle nachfolgende Anweisungen mit diesem Pfad arbeiten.

    Es muss nicht als erstes in der SciTEUser.properties stehen, jedoch vor der ersten Benutzung und es sind definitiv nicht alle nachfolgenden Anweisungen, die mit diesem Pfad arbeiten. Bei dir und auch bei mir steht keine Zeile in der SciTEUser.properties, die diese Variable benötigt - kein einziges Lua-Script bei mir braucht diese Variable.

    Zitat von Professor Bernd

    ext.lua.auto.reload=1

    Kannst du dir sparen (auskommentieren), denn so ist es ja bereits in der SciTEGlobal.properties gesetzt.

    Zitat von Professor Bernd

    # Dokumente in mehreren SciTE-Instanzen laden, statt in 1 Fenster mit mehreren Tabs.

    Richtig ist: Mehrere SciTE-Instanzen erlauben.

    Denn auch bei mehreren SciTE-Instanzen kann jede Instanz per Default bis zu 20 Tabs haben, wobei die Anzahl der Tabs aber beliebig erhöht werden kann.

    #~ Anzahl der parallel (gleichzeitig) geöffneten Tabs von 20 auf 25 erhöhen

    buffers=25

  • Lua - Grundkenntnisse

    • Bitnugger
    • 5. Oktober 2020 um 10:36
    Zitat von Professor Bernd

    Muss ich sonst noch etwas machen, damit Code aus der SciTEStartup.lua ausgeführt wird?

    Ja, du musst SciTE mitteilen, dass es nicht die vordefinierte, sondern die angegebene SciTEStartup.lua benutzen soll. Das machst du in der SciTEUser.properties mit folgendem Eintrag:

    #~ Lua script that will be loaded when SciTE starts to set up the global state for Lua.

    ext.lua.startup.script=$(SciteUserHome)\SciTEStartup.lua

    Worauf du auch achten solltest:

    ext.lua.auto.reload

    ext.lua.reset

    extension.filepattern

    ext.lua-Eigenschaften

    Die ext.lua-Eigenschaften sind spezifisch für die SciTE Lua Scripting Extension. Die Eigenschaft extension.filepattern ist Teil der generischen SciTE-Erweiterungsschnittstelle, wird derzeit jedoch nur von der Lua Scripting-Erweiterung verwendet.

    Die Eigenschaft ext.lua.startup.script definiert den Dateinamen eines Lua-Skripts, das geladen wird, wenn SciTE mit dem Einrichten des globalen Status für Lua beginnt. Der Standardwert ist $(SciteUserHome)/SciTEStartup.lua. Sie sollten für diese Eigenschaft einen absoluten Pfad verwenden, können jedoch auf die Eigenschaften $(SciteDefaultHome) oder $(SciteUserHome) verweisen. Hier können globale Ereignishandler, Befehlsfunktionen sowie andere Funktionen und Objekte definiert werden.

    Die Eigenschaft ext.lua.auto.reload bestimmt, was passiert, wenn Sie das Startskript oder das aktive Erweiterungsskript in SciTE speichern. Wenn es auf 0 gesetzt ist, wird das Startskript nur zum Startzeitpunkt oder beim Wechseln der Puffer (abhängig von ext.lua.reset) angewendet, und Änderungen am Erweiterungsskript werden nur angewendet, wenn Sie die Puffer wechseln. Wenn ext.lua.auto.reload auf 1 gesetzt ist (Standardeinstellung), initialisiert SciTE den globalen Bereich sofort neu, wenn eines der Skripte in SciTE gespeichert wird. Selbst wenn ext.lua.auto.reload aktiviert ist, bemerkt SciTE nicht, wenn die Dateien von außerhalb der aktuellen SciTE-Instanz geändert werden. Siehe dazu ext.lua.reset unten.

    Die Eigenschaft ext.lua.reset dient hauptsächlich zum Debuggen. Wenn ext.lua.reset 0 ist (Standardeinstellung), wird die Eigenschaft des Startskripts nur einmal überprüft - beim Start von SciTE. Wenn ext.lua.reset auf 1 geändert wird, überprüft SciTE die Eigenschaft des Startskripts und lädt das neue Startskript jedes Mal neu, wenn Sie die Puffer wechseln. Als solches hat es eine andere (größere) Reihe von Nebenwirkungen als ext.lua.auto.reload. In einigen Situationen ist es sinnvoll, sowohl auto.reload als auch reset zu aktivieren, aber normalerweise reicht ext.lua.auto.reload allein aus.

    Abgesehen von ext.lua.startup.script bietet die Eigenschaft extension.filepattern eine Möglichkeit, zusätzliche Funktionen und Ereignishandler zu laden, die für einen bestimmten Dateityp spezifisch sein können. Wenn der Wert der Erweiterungseigenschaft auf .lua endet und eine vorhandene Datei benennt, wertet die Erweiterung Lua das Skript aus, sodass im Skript definierte Ereignishandler und Befehle verfügbar sind, während dieser Puffer aktiv ist. Über ext.lua.startup.script definierte Funktionen und Objekte sind weiterhin verfügbar, sofern sie nicht überschrieben werden.

    Die Erweiterungseigenschaft kann auch ein Verhalten definieren, das für ein bestimmtes Verzeichnis spezifisch ist. Wenn in der Erweiterungseigenschaft ein bloßer Dateiname (kein Pfad) angegeben ist, sucht SciTE die Datei an den Speicherorten der Standardeigenschaftendateien, beginnend mit dem lokalen Verzeichnis. Dies kann in Kombination mit einer lokalen SciTE.properties-Datei sehr nützlich sein.

    PS: In der SciTE4AutoIt3.chm sind teils andere Werte als Default angegeben, wie in der SciTEGlobal.properties tatsächlich verwendet werden!

    Z.B.:

    ext.lua.reset=0 ; SciTE4AutoIt3.chm

    ext.lua.reset=1 ; SciTEGlobal.properties

  • Lua - Grundkenntnisse

    • Bitnugger
    • 4. Oktober 2020 um 19:50
    Zitat von Professor Bernd

    Könnte so sein, denn es ist schon seltsam dass die SciTEDoc.html in der Fehler-MsgBox genannt wird, weil ich sie (wissentlich) nirgends aufgerufen habe.

    Mit F1 hast du sie aufgerufen... der Dateiname SciTEDoc.html ist in der SciTE.exe enthalten und wird auch im selben Pfad gesucht, aus der die SciTE.exe gestartet wurde - wobei in der MsBox hinter file: ein / zu wenig steht.

    Bsp.:

    c:\Program Files (x86)\AutoIt3\SciTE\SciTE.exe

    file:///c:\Program Files (x86)\AutoIt3\SciTE/SciTEDoc.html

  • Lua - Grundkenntnisse

    • Bitnugger
    • 4. Oktober 2020 um 19:16
    Zitat von BugFix

    Deine gepostete Fehlermeldung verweist auf eine "..SciTEDoc.html" - was ist das für eine Datei?

    Die wird normalerweise mit wscite ausgeliefert...

    Download: https://www.scintilla.org/wscite32_445.zip

    SciTEDoc.html ist aber in der SciTE4AutoIt3.chm enthalten... dass ab und an (habe vergessen warum) trotzdem nach der SciTEDoc.html gefragt wird, ist wohl ein Bug.

  • SciTE - Toggle Block Comment -- NEU!! ​​ Zum Aufheben eines Kommentarblocks ist keinerlei Markierung notwendig!

    • Bitnugger
    • 4. Oktober 2020 um 18:17
    Zitat von BugFix

    # if TAB should used as box.middle, define an alternation (e.g. "@Tab"), "\t" can't be passed here

    \t geht auch...

    comment.box.middle.au3=\t ; SciTEUser.properties

    if self.boxMiddle == "@Tab" or self.boxMiddle == '\\t' then self.boxMiddle = "\t" end

  • SciTE - Toggle Block Comment -- NEU!! ​​ Zum Aufheben eines Kommentarblocks ist keinerlei Markierung notwendig!

    • Bitnugger
    • 4. Oktober 2020 um 17:05
    Zitat von BugFix

    Da werde ich mal dran basteln.

    Ich habe es getestet und soweit ich das beurteilen kann, funktioniert es so:

    Code
            -- proceed with last line
            line = editor:GetLine(self.lineEnd)
            -- if uncomment the last line will ignored
            if not uncomment then
                self.newText = self.newText..self.boxMiddle..line..self.boxEnd
            else
                self.newText = self.newText:gsub('\r\n$', '', 1)
            end

    In der SciTEUser.properties habe ich noch folgende Zeilen hinzugefügt, weil in SciTEGlobal.properties comment.box.end.au3 ein Leerzeichen zu viel enthält und ich für comment.box.middle.au3 lieber auch ein TAB hätte:

    comment.box.end.au3= #CE ; SciTEGlobal.properties

    comment.box.end.au3=#CE ; SciTEUser.properties

    comment.box.middle.au3=; ; SciTEGlobal.properties

    comment.box.middle.au3=@Tab ; SciTEUser.properties

  • SciTE - Toggle Block Comment -- NEU!! ​​ Zum Aufheben eines Kommentarblocks ist keinerlei Markierung notwendig!

    • Bitnugger
    • 4. Oktober 2020 um 15:30

    Das war jetzt sehr gehässig... ich sende ab und sehe direkt die neue Version... jetzt wird nur noch bei beiden eine Leerzeile zu viel eingefügt, wenn der Kommentar wieder entfernt wird.

    Für comment.box.middle würde ich gerne ein TAB verwenden, doch SciTE filtert mir die aus, wenn sie am Ende einer Zeile stehen.

    Schön wäre, wenn es so ginge:

    comment.box.middle.lua=\t

  • SciTE - Toggle Block Comment -- NEU!! ​​ Zum Aufheben eines Kommentarblocks ist keinerlei Markierung notwendig!

    • Bitnugger
    • 4. Oktober 2020 um 15:16

    Da stimmt aber was noch nicht ganz...

    Code: *.au3
    ConsoleWrite('! Asc("(")          = ' & Asc('(') & ' = 0x' & Hex(Asc('('), 2) & @CRLF) ; $VK_DOWN
    ConsoleWrite('! Asc(")")          = ' & Asc(')') & ' = 0x' & Hex(Asc(')'), 2) & @CRLF) ; $VK_SELECT
    ; 0.
    
    ; 1. mal Toggle Block Comment
    #CS
    ConsoleWrite('! Asc("(")          = ' & Asc('(') & ' = 0x' & Hex(Asc('('), 2) & @CRLF) ; $VK_DOWN
    ConsoleWrite('! Asc(")")          = ' & Asc(')') & ' = 0x' & Hex(Asc(')'), 2) & @CRLF) ; $VK_SELECT
    #CE
    ; 1. - OK
    
    ; 2. mal Toggle Block Comment
    onsoleWrite('! Asc("(")          = ' & Asc('(') & ' = 0x' & Hex(Asc('('), 2) & @CRLF) ; $VK_DOWN
    onsoleWrite('! Asc(")")          = ' & Asc(')') & ' = 0x' & Hex(Asc(')'), 2) & @CRLF) ; $VK_SELECT
    ; 2. - BAD! Hier fehlt in jeder Zeile das erste Zeichen!
    Alles anzeigen
    Code: *.lua
    print('> sUserLua = ' .. props["lua.user.scripts.path"])
    print('> FileExt  = ' .. props['FileExt'])
    ; 0.
    
    ; 1. mal Toggle Block Comment
    --[[-----------------------------------------------------------------------
    print('> sUserLua = ' .. props["lua.user.scripts.path"])
    print('> FileExt  = ' .. props['FileExt'])
    -------------------------------------------------------------------------]]
    ; 1.
    
    ; 2. mal Toggle Block Comment
    print('> sUserLua = ' .. props["lua.user.scripts.path"])
    print('> FileExt  = ' .. props['FileExt'])
    
    ; 2. Hier wird am Ende eine Leerzeile zu viel eingefügt!
    Alles anzeigen

    EOL ist bei beiden CR+LF

    Code: local newLine = function(_line, _uncmt)
            ...
            else            
                if bmiddle then _line = boxmiddle.._line
                else _line = _line end
            end

    Wofür das else _line = _line ?

  • Diskussion zu: FAQ SciTE Editor

    • Bitnugger
    • 3. Oktober 2020 um 21:01

    Nach zweimaligem Drücken von Strg+Shift+Q sollten die Markierungen wieder weg sein, sind sie aber nicht... sondern werden verdoppelt.

  • Fuzzy-Search

    • Bitnugger
    • 2. Oktober 2020 um 17:30

    Ja, so hängt es sich nicht auf, auch wenn keine Strings übergeben werden...

  • Fuzzy-Search

    • Bitnugger
    • 2. Oktober 2020 um 16:21

    Ich habe deine Dll so kompiliert: nim c -d:release -o:FuzzySearch.dll FuzzySearch.nim

    Doch leider funktioniert es so nicht... die Version aus dem Zip-Archiv läuft aber bei mir.

    AutoIt3.exe ended.rc:-1073741819

    Edit:

    Hat sich aufgehangen, weil die Datei bgb.txt nicht gefunden wurde... mit läuft es... obwohl ich eine etwas andere Größe nach dem Kompilieren habe.

    FuzzySearch.dll 135.675 Bytes ; meine Version

    FuzzySearch.dll 126.753 Bytes ; deine Version

  • Verzeichnisangabe bei Consolen-Programm-Ende anzeigen

    • Bitnugger
    • 30. September 2020 um 17:04

    Ist ja in der Tat seltsam... aber so könntest du es 'fixen':

    AutoIt
    ;-- TIME_STAMP   2020-09-30 17:01:01   v 0.1
    
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile_x64=GetWindowspos.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    ;~ #include <AutoItConstants.au3>
    ;~ #include <WindowsConstants.au3>
    #include <Array.au3>
    ;~ #include <Misc.au3>
    ;~ #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    
    _WinAPI_AttachConsole()
    $hConsole = _WinAPI_GetStdHandle(1)
    _WinAPI_WriteConsole($hConsole, "@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & "   var: $hConsole --> " & $hConsole & @LF)
    _WinAPI_WriteConsole($hConsole, @CRLF & "Please be patient until preparations are done...!" & @CRLF & @CRLF)
    
    $sName = InputBox("Eingabe Fenstername", "Bitte gib den Fenstername ein:")
    
    Local $aPos = WinGetPos($sName)
    _ArrayDisplay($apos, $sName)
    
    $con = _WinAPI_WriteConsole($hConsole, '$aPos = ' & _ArrayToString($aPos, ', ') & @CRLF & @WorkingDir & '>') ; <<<===
    
    _Console_Close()
    
    Func _Console_Close()
        Local $vRet = DllCall("Kernel32.dll", "int", "FreeConsole")
        If @error Then Return SetError(1, 0, 0)
        Return SetError($vRet[0] <> 0, 0, $vRet[0])
    EndFunc   ;==>_Console_Close
    Alles anzeigen
  • psexec ausgabe kopieren

    • Bitnugger
    • 30. September 2020 um 14:41
    Zitat von Cujio

    ich habe ein Script und versuche mit psexec auf einem remote-pc etwas zu pingen.

    Wieso pingst du es nicht von deinem lokalen PC?

    Zitat von Cujio

    Run(@ComSpec & " /c " & $CMD,"",@SW_SHOW)

    Auf dem lokalen PC ginge es so:

    AutoIt
    ; Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )
    Local $iPID = Run(@ComSpec & " /c " & $CMD,"",@SW_SHOW, $STDOUT_CHILD) ; $STDOUT_CHILD = 2
    ProcessWaitClose($iPID)
    Local $sOutput = StdoutRead($iPID) ; Tada... ;-)

    Das funktioniert allerdings nicht auf einem anderen PC im Netzwerk... um an diese Ausgabe zu kommen, müsstest du diese Zeilen als Script auf dem anderen PC speichern und mit psexec ausführen. Wenn psexec kein Ergebnis liefert, kannst du die Ausgabe ($sOutput) in eine Datei speichern, die du dann von deinem PC aus auslesen kannst. Das wäre die "einfachste Variante"...

  • os.execute or io.popen on windows without console flashing

    • Bitnugger
    • 30. September 2020 um 14:26
    Zitat von BugFix

    Also entweder mache ich was falsch, oder es geht doch noch nicht.

    Habe ich heute morgen auch... selbes Spiel.

  • Verzeichnisangabe bei Consolen-Programm-Ende anzeigen

    • Bitnugger
    • 30. September 2020 um 14:24
    Zitat von hipfzwirgel

    Sollte ich den Handle per _WinAPI_CloseHandle zusätzlich schließen anstatt nur ein Exit zu machen?

    Wenn du dir das Handle mit Attach geholt hast, darfst du es nicht schließen, sondern musst es wieder freigeben, soweit ich es weiß.

    AutoIt
    Func _Console_Close()
        Local $vRet = DllCall("Kernel32.dll", "int", "FreeConsole")
        If @error Then Return SetError(1, 0, 0)
        Return SetError($vRet[0] <> 0, 0, $vRet[0])
    EndFunc   ;==>_Console_Close

    Ohne ein lauffähiges (Minimal-)Script von dir, kann ich wenig sinnvolles zu deinem Problem sagen...

    Dateien

    Console.au3 13,52 kB – 266 Downloads
  • os.execute or io.popen on windows without console flashing

    • Bitnugger
    • 30. September 2020 um 10:43
    Zitat von BugFix

    Die Unmöglichkeit Dll's einzubinden ist das weitaus größere Problem.

    Hm, wenn ich es richtig verstanden habe, dann geht das in der neuen Version mit luaL_setfuncs. Somit ist es ja möglich... nur eben nicht mehr die "veralteten" Dlls, welche luaL_register benötigen.

    Genau betrachtet ist es hauptsächlich sehr ärgerlich, dass der Support für diverse Lua-Dlls unter aller Sau ist. <X

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.08.30)

    • Bitnugger
    • 30. September 2020 um 09:28

    Habe die Hilfe vorhin gedownloadet... die Dateien sind von 28.09.2020... dafür finde ich aber keine Seite hier im Forum, deshalb schreibe ich es hier.

    _WinAPI_GetAsyncKeyState

    Bemerkungen

    Obwohl das niedrigstwertige Bit des Rückgabewertes anzeigt, ob die Taste seit der letzten Abfrage gedrückt wurde, kann aufgrund des präventiven Multitasking-Verhaltens von Windows eine andere Anwendung GetAsyncKeyState aufrufen und das "kürzlich gedrpckte" Bit anstelle der Anwendung empfangen. Das Verhalten des niedrigstwertigen Bits des Rückgabewertes wird für die Kompatibilität mit 16-Bit-Windows-Anwendungen (die nicht präventiv sind) strikt beibehalten und worauf man sich jedoch nicht verlassen sollte.

    Obwohl das niedrigstwertige Bit des Rückgabewerts angibt, ob die Taste seit der letzten Abfrage gedrückt wurde, kann eine andere Anwendung aufgrund des vorbeugenden Multitasking-Charakters von Windows GetAsyncKeyState aufrufen und anstelle Ihrer Anwendung das Bit "Zuletzt gedrückt" empfangen. Das Verhalten des niedrigstwertigen Bits des Rückgabewerts wird aus Gründen der Kompatibilität mit 16-Bit-Windows-Anwendungen (die nicht präemptiv sind) streng beibehalten und sollte nicht verwendet werden.

  • Erkennen wenn User eine öffnende runde Klammer schreibt, unabhängig vom Keyboard Layout

    • Bitnugger
    • 30. September 2020 um 07:47

    Kann dein PSPad-Script denn von einem AutoIt-Script (au3/exe) aufgerufen werden, wenn die Taste/n xyz gedrückt wurde/n? Wie/wann wird es überhaupt gestartet und wie oft bzw. wodurch getriggert?

  • Erkennen wenn User eine öffnende runde Klammer schreibt, unabhängig vom Keyboard Layout

    • Bitnugger
    • 30. September 2020 um 00:15

    Vergleichbar wäre, wenn es in AutoIt die Funktion OpenDll nicht mehr geben würde...

    Zitat von Professor Bernd

    Falls man es benutzen kann, dann kann man die alten Scripts doch umschreiben, oder?

    Ich brauche z.B. die shell.dll sehr oft... doch weil es im aktuellen SciTe kein luaL_register mehr gibt... und z.B. auch kein lua_insert... kann die shell.dll nicht mehr eingebunden werden.

    Nutzbare Funktionen in der shell.dll: exec, fileexists, findfiles, from_utf8, getclipboardtext, getfileattr, inputbox, msgbox, setfileattr, to_utf8

    shell.exec ist sicher die am häufigsten genutzte... das ist ein guter Ersatz für os.execute ...weil bei shell.exec kein DOS--Fenster aufpoppt.

    Wer diese Funktionen in seinen Scripten benutzt, muss sie alle entsprechend umschreiben, so dass sie ohne shell.dll funktionieren - viel Spass dabei! Dies gilt nicht nur für die shell.dll.

  • Erkennen wenn User eine öffnende runde Klammer schreibt, unabhängig vom Keyboard Layout

    • Bitnugger
    • 29. September 2020 um 22:50
    Zitat von Musashi

    Auszug : 8.3 – Changes in the API

    Die Änderungen betreffen nicht nur die API.

    Hier musst du vergleichen, was in SciTE fehlt: http://www.lua.org/manual/5.2/manual.html#6.1 ; (C API|auxiliary library)

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™