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

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

    • Bitnugger
    • 26. August 2020 um 02:08
    Zitat von Professor Bernd

    Für mich sieht das richtig aus.

    Specifies the type of border. This parameter can be a combination of the following values:

    Der erste Satz in der Beschreibung zu $iFlags in der englischen Hilfe ist für meine Begriffe meilenweit weg von "Legt fest, welche Kanten gezeichnet werden."

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

    • Bitnugger
    • 26. August 2020 um 01:08
    Zitat von Professor Bernd

    In der Parameter-Tabelle gibt es in der linken Spalte das Feld "$iEdgeType", aber es fehlt das Feld "$iFlags".

    $iFlags hat es wohl irgendwie auf die rechte Seite der Tabelle geschafft... da wo die Werte und Beschreibungen stehen... 8o

    Und die Beschreibung ist auch nicht richtig...

    Legt fest, welche Kanten gezeichnet werden. Kann eine Kombination der folgenden Werte sein:

    Gibt den Rahmentyp an. Dieser Parameter kann eine Kombination der folgenden Werte sein:

  • Diskussionen etc. zu Snippets

    • Bitnugger
    • 20. August 2020 um 20:23
    Zitat von Oscar

    Bei Nim benutze ich allerdings auch die aktuelle Version (v1.2.6).

    Daran lag es!

    scoop update nim ; Umgebungsvariable Path korrigieren: C:\Users\ghost\scoop\apps\nim\1.2.6\bin

    Danach ging nichts mehr, weil der Compiler (gcc.exe) nicht mehr gefunden wurde. Habe die beiden Verzeichnisse dann manuell nach c:\Users\Ghost\scoop\apps\nim\current\dist\ kopiert.

    mingw32\

    mingw64\

  • Diskussionen etc. zu Snippets

    • Bitnugger
    • 20. August 2020 um 18:46
    Zitat von Oscar

    Welche Nim-Version benutzt Du?

    Nim Compiler Version 1.2.0 [Windows: amd64]

    wnim-0.11.2

    Nein, ich habe nichts an dem Code geändert...

  • Diskussionen etc. zu Snippets

    • Bitnugger
    • 20. August 2020 um 15:12

    Ops...

    NamedPipe.png

  • Gibt es eine "Tag"-Eigenschaft für Controls?

    • Bitnugger
    • 18. August 2020 um 16:58
    Zitat von Oscar

    Das Problem bei AutoIt ist bloß, dass dort die Control-ID abgespeichert ist und ich weiß nicht, wie AutoIt reagiert, wenn man dort andere Sachen speichert.

    Das Problem hatten wir hier schon mal: Subclassing und AutoIts interne Nachrichtenverarbeitung

  • Suche einfach erweiterbaren Einstellungen-Dialog (Program Settings)

    • Bitnugger
    • 16. August 2020 um 18:06
    Zitat von Professor Bernd

    Nix für mich!

    Das kommt noch... früher oder später kriegen wir sie alle! :rofl:

  • Suche einfach erweiterbaren Einstellungen-Dialog (Program Settings)

    • Bitnugger
    • 16. August 2020 um 17:25

    Hier noch ein Link dazu: https://khchen.github.io/wNim/autolayout.html

  • shell.dll streikt, wenn die Gesamtlänge der Befehlszeile > 270 Zeichen ist.​

    • Bitnugger
    • 16. August 2020 um 17:02
    Zitat von BugFix

    Für den Unicode-Aufruf läßt sich das umgehen durch das Präfix "\\?\"

    Mit \\?\ bzw. \\\\?\\ funktioniert es auch nur (shell und os), wenn die max. erlaubte Anzahl der Zeichen nicht überschritten wird.

    Als Workaround gefällt mir das Bsp. zu Test 2 am besten...

    shell = require "shell"

    os = require "os"

    -- Syntax: shell.exec (strCommand, [strOperation], [boolNoShow], [bWaitOnReturn])

    -- Syntax: os.execute([command])

    local sRepChar = 'x'

    --~ print(sRepChar:rep(10))

    -- Test 1 - shell.exec

    sCmd = '"C:\\Program Files (x86)\\AutoIt3\\SciTE\\..\\autoit3.exe" /AutoIt3ExecuteScript "f:\\AutoIt\\AutoIt3_Tools\\_ConvertFileToUTF8.au3" "M:\\Temp\\Test_0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123.au3"'

    shell.exec(sCmd) -- sCmd darf max. 268 Zeichen lang sein.

    --~ print("+ shell.exec("..sCmd:len()..") = ", shell.exec(sCmd), sCmd,'\n')

    -- Test 2 - shell.exec

    sCmd = '"f:\\AutoIt\\AutoIt3_Tools\\_ConvertFileToUTF8.au3" "M:\\Temp\\Test_'..sRepChar:rep(191)..'.au3"'

    shell.exec(sCmd, 'run') -- sCmd darf max. 259 Zeichen lang sein.

    --~ print("+ shell.exec("..sCmd:len()..") = ", shell.exec(sCmd, 'run'), sCmd,'\n')

    -- Test 3 - os.execute

    sCmd = 'cmd.exe /C ""C:\\Program Files (x86)\\AutoIt3\\SciTE\\..\\autoit3.exe" /AutoIt3ExecuteScript "f:\\AutoIt\\AutoIt3_Tools\\_ConvertFileToUTF8.au3" "M:\\Temp\\Test_'..sRepChar:rep(8003)..'.au3""'

    os.execute(sCmd) -- sCmd darf max. 8160 Zeichen lang sein.

    --~ print("+ os.execute("..sCmd:len()..") = ", os.execute(sCmd), sCmd,'\n')

  • Verschlüsselte Elemente in csv-Datei (Problem mit ; und CR bzw. CRLF)

    • Bitnugger
    • 15. August 2020 um 20:11
    Zitat von HansJ54

    Problem: beim Verschlüsseln könnte ein Semikolon oder ein CR entstehen und das macht das csv-Einlesen unmöglich.

    Konvertiere doch einfach den verschlüsselten String mit StringToBinary... und vor dem Entschlüsseln wieder zurück mit BinaryToString.

  • shell.dll streikt, wenn die Gesamtlänge der Befehlszeile > 270 Zeichen ist.​

    • Bitnugger
    • 13. August 2020 um 21:22
    Zitat von Professor Bernd

    Älterer Thread, aber ist das Problem gelöst?

    Nein, ist es nicht.

    Der Vorteil an shell.exec() ist, dass so kein DOS-Fenster aufpoppt, was bei os.execute() leider der Fall ist. Zur Not könnte ich also os.execute() verwendenden und das Problem wäre gelöst...

    Zitat von Professor Bernd

    Dein Konvertier-Script könnte das zu konvertierende Original-Script in einen kurzen Pfad kopieren und dort konvertieren.

    Sorry, aber das ist quatsch... so weit komme ich mit shell.exec() ja gar nicht...

    PS: Habe meinen rechten Arm in Gips und kann nur mit links tippen... war drei Monate krank, wegen Knochenabsplitterung im Lendenwirbelbereich (Unfall), dann acht Tage arbeiten, und jetzt wieder für mindestens drei bis vier Monate krank (Unfall), weil mein Handgelenk Bekanntschaft mit dem Sägeblatt unserer Steinschneidemaschine gemacht hat... zum heulen...

  • Feststellen, ob Programm bereits gestartet

    • Bitnugger
    • 11. August 2020 um 22:01

    So kommst du an die Chrome-PIDs, die mit einem speziellen Profil gestartet wurden:

    AutoIt
    ;-- TIME_STAMP   2020-08-11 22:01:16   v 0.1
    
    #include <WinAPIProc.au3>
    
    Local $sProcName = 'Chrome.exe', $aProcList = ProcessList($sProcName), $sProcCommandLine, $sProfilName = 'SpezialProfil.xyz'
    
    If UBound($aProcList) > 1 Then
        ConsoleWrite(StringFormat('> %-12s | %-32s | %6s | %s\n', 'Status', 'ProcName', 'PID', 'Args'))
        For $i = 1 To $aProcList[0][0] Step 1
            $sProcCommandLine = _WinAPI_GetProcessCommandLine($aProcList[$i][1])
            If StringInStr($sProcCommandLine, $sProfilName) Then
                ConsoleWrite(StringFormat('! %-12s | %-32s | %6i | %s\n', 'Terminated', $sProcName, $aProcList[$i][1], $sProcCommandLine))
                ProcessClose($aProcList[$i][1])
            Else
                ConsoleWrite(StringFormat('+ %-12s | %-32s | %6i | %s\n', 'Running', $sProcName, $aProcList[$i][1], $sProcCommandLine))
            EndIf
        Next
    EndIf
    Alles anzeigen
  • Diskussionen etc. zu Snippets

    • Bitnugger
    • 25. Juli 2020 um 11:45

    Sehr schön!

  • @ScriptLineNumber / in Function die aufrufende @ScriptLineNumber nutzen und Debuggen in kompilierten Programmen

    • Bitnugger
    • 23. Juli 2020 um 15:15
    Zitat von HansJ54

    Gibt es eine Möglichkeit, in einer Function die Zeile des Aufrufs zu verarbeiten ohne diese als Parameter zu übergeben? Also etwas wie @CallingScriptLineNumber?

    Nein, gibt es nicht. Du kannst der Funktion aber einfach einen optionalen Parameter übergeben und ihn mit @ScriptLineNumber vorbelegen.

    AutoIt
    _Test()
    _Test(1, 3)
    
    Func _Test($iScriptLineNumber = @ScriptLineNumber, $iError = @error)
        ConsoleWrite('$iScriptLineNumber = ' & $iScriptLineNumber & @CRLF)
        ConsoleWrite('$iError            = ' & $iError & @CRLF)
    EndFunc
    Zitat von HansJ54

    Und: gibt es einen Weg, die @ScriptLineNumber auch im kompilierten Programm beim Debuggen oder bei Fehlermeldungen anzuzeigen?

    So evtl.:

    AutoIt
    #AutoIt3Wrapper_Run_Au3Stripper=y    ; Run Au3Stripper before compilation (Default=n) 
    #Au3Stripper_Parameters=/rsln        ; Replace @ScriptLineNumber with the actual line number in the merged source. This is for debug purposes with compiled scripts.
                                         ; All master lines will show 2 numbers in the format xxx/yyy where xxx is the original master script line number and yyy the
                                         ; merged script line number. 
  • RegExp - Finde wenn Klammern ausbalanciert

    • Bitnugger
    • 23. Juli 2020 um 14:48

    RegExp - Nicht-finden, wenn nach Suchbegriff noch was kommt

    solltest du evtl. umbenennen:

    RegExp - Nur matchen, wenn Suchstring mit Pattern endet

  • DriveMapAdd Laufwerk erscheint nicht im Explorer

    • Bitnugger
    • 19. Juli 2020 um 14:55

    Bei mir funktioniert es so:

    AutoIt
    ;-- TIME_STAMP   2020-07-19 14:50:46   v 0.1
    
    Opt('MustDeclareVars', 1)
    
    Global $sLaufwerk = "S:", $sShare = "\\fritz.box\FRITZ.NAS"
    
    Global $aDriveMapErrors = ['Undefined / Other error. @extended set with Windows API return', 'Access to the remote share was denied', 'The device is already assigned', 'Invalid device name', 'Invalid remote share', 'Invalid password']
    
    Global $sDriveMapGet = DriveMapGet($sLaufwerk)
    
    If $sDriveMapGet And $sDriveMapGet <> $sShare Then
        If StringLeft(@WorkingDir, 2) = $sLaufwerk Then FileChangeDir(@TempDir)
    
        ; Max 10x versuchen Laufwerk zu trennen. 1x reicht manchmal nicht
        For $i = 1 To 10
            If DriveMapDel($sLaufwerk) Then ExitLoop
            Sleep(1000)
        Next
        ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & "   var: $i --> " & $i & @LF) ; $i ist bei mir immer 1
        If DriveMapGet($sLaufwerk) Then Exit MsgBox(16, @ScriptName, 'the disconnection for ' & $sLaufwerk & ' was unsuccessful!')
    EndIf
    
    If DriveMapGet($sLaufwerk) = '' Then
        DriveMapAdd($sLaufwerk, $sShare, 8 + 1);, "fritz.box.user", "password")
        If @error Then Exit MsgBox(16, @ScriptName, '@error = ' & @error & @CRLF & $aDriveMapErrors[@error -1] & @TAB & '@extended = ' & @extended)
    EndIf
    
    ShellExecute($sLaufwerk)
    Alles anzeigen
  • Fenster überwachen

    • Bitnugger
    • 18. Juli 2020 um 11:18
    Zitat von water

    In Dein While/WEnd musst Du aber noch eine ExitLoop-Bedingung einbauen, sonst läuft Dein Skript ewig - oder länger

    Genau das soll es ja auch... warten, bis ein Fenster mit dem Titel "Hinweis" den Fokus bekommt, dieses dann schließen und wieder auf das nächste Fenster mit dem Titel "Hinweis", das den Fokus bekommt, warten.

    Zitat von autoiter

    Hi Bitnugger ich weiß nicht ob das ressourcenschonender ist, aber statt so einem Code, den wohl niemand nutzen würde, wäre es vllt. besser allgemein die Nutzung von ControlClick oder ControlSend vorzuschlagen.

    So ist es definitiv ressourcenschonender, weil nur das gemacht wird, was gemacht werden soll.

    Kann mir nicht vorstellen, dass es Leute gibt, die nachvollziehen können, was der Code genau macht und ihn trotzdem nicht nutzen.

    Besser allgemein die Nutzung von ControlClick oder ControlSend vorzuschlagen... indirekt habe ich das ja, indem ich anstelle von Send ControlClick verwendet habe.

    Send ist niemals erste Wahl... wenn möglich besser ControlClick oder ControlSend verwenden!!!

    Hier noch mal mein Code mit einer Verbesserung: REGEXPTITLE

    Close_Hinweis.au3 starten und laufen lassen:

    AutoIt: Close_Hinweis.au3
    While 1
        ControlClick(WinWaitActive("[REGEXPTITLE:^Hinweis$]"), '', '[CLASS:Button; Instance:1]')
    WEnd

    Open_Hinweis.au3 starten:

    AutoIt: Open_Hinweis.au3
    For $i = 1 To 3 Step 1
        MsgBox(64, 'Hinweis', 'Wird von Close_Hinweis.au3 geschlossen...')
    Next
    Exit MsgBox(64, 'Hinweisrichtlinien', 'Wird nicht von Close_Hinweis.au3 geschlossen...')
  • Fenster überwachen

    • Bitnugger
    • 17. Juli 2020 um 18:33

    Oder so:

    AutoIt
    While 1
        ControlClick(WinWaitActive("Hinweis"), '', '[CLASS:Button; Instance:1]')
    WEnd
  • Diskussionen etc. zu Snippets

    • Bitnugger
    • 6. Juli 2020 um 00:32
    Zitat von BugFix

    Immer wieder im Einsatz: INI-Dateien. Nim stellt dazu das Modul parsecfg bereit. Hier mal ein kleines Bsp.:

    Sehr schön! :thumbup:

  • RegExp: Verschachtelte Block-Kommentare entfernen - Char nicht-in-String ersetzen

    • Bitnugger
    • 4. Juli 2020 um 05:21

    ExtractFuncLines... oder weil noch vieles extra gemacht wird, ExtractFuncLinesEx. Das FromFile würde ich mir sparen, denn das sieh man ja sofort am ersten Parameter.

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™