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

  • Neuer Tab in Chrome

    • BugFix
    • 30. Mai 2017 um 17:28
    Zitat von Oscar

    Aber da dürfte das genauso sein.

    Nein, Chrome bietet diese Einstellung nicht extra an. Aber ich habe noch nie erlebt, dass ein Link in neuem Fenster geöffnet wird, wenn ich das nicht explizit (per Kontextmenü oder Maus-Tatstatur-Kombination) festlege.
    Also scheint <Öffnen in neuem Tab> die Standardeinstellung zu sein.

  • Neuer Tab in Chrome

    • BugFix
    • 30. Mai 2017 um 14:53

    Bei mir wird jeder Link, den ich mit ShellExecute aufrufe, in einem neuen Tab geöffnet. Version 58.0.3029.110 (64-bit)

  • Bestimmte Unterordner auslesen *Powershell*

    • BugFix
    • 30. Mai 2017 um 14:30
    Zitat von Hingo

    Also gibt $_.PSisContainer an ob es sich um ein Ordnerverzeichniss handelt oder nicht.

    PSIsCointainer kannst du vergleichen mit der AutoIt-Abfrage StringInStr(FileGetAttrib($sPath), "D"), es wird also die Ordnereigenschaft geprüft.

    Du kannst einige Standardbefehle auch beim Bearbeiten der Registry nutzen, musst diese halt nur vorher mounten und dann ist sie ähnlich bearbeitbar, wie ein normales Datenlaufwerk.
    Für PS gibt es Unmengen Tuts und Bsp. - da findest du eigentlich immer eine Lösung.

  • Bestimmte Unterordner auslesen *Powershell*

    • BugFix
    • 30. Mai 2017 um 13:24
    Zitat von Hingo

    Kann es sein das dein Code nur bei Ordnern funktioniert.

    Zitat von BugFix

    ? { $_.PSisContainer -eq $true

    ;)

    Aber da du an die Registry willst: Die Registry ist KEINE Ordner-Dateistruktur! Die kannst du natürlich nicht mit den Standardbefehlen bearbeiten (in AutoIt nimmst du ja auch RegRead/RegWrite).

    Registry mit PowerShell bearbeiten

  • Bestimmte Unterordner auslesen *Powershell*

    • BugFix
    • 30. Mai 2017 um 12:17
    Bash
    $exclude = "Administrator", "Default", "Public"
    gci "c:\users" -filter * | ? { $_.PSisContainer -eq $true -and $exclude -notcontains $_.Name } | SELECT FullName, Name
  • Teilstring einer Variable ab letztem Zeichen

    • BugFix
    • 29. Mai 2017 um 14:08

    @horphi

    AutoIt
    $s = "eins;zwei;drei;vier;fünf;sechs"
    $aMatch = StringRegExp($s, "(?:[^;]+;){4}([^;]+)", 1)
    If Not @error Then
    	ConsoleWrite('Eintrag nach 4. Semikolon: ' & $aMatch[0] & @CRLF)
    EndIf
  • SciTE - Neue AU3-Datei immer mit Kodierung "UTF-8 mit BOM" erstellen

    • BugFix
    • 27. Mai 2017 um 16:57

    Wenn noch keines vorhanden ist, ist auch der Registry- Eintrag für Kontextmenü (neue au3-Datei) nicht vorhanden. Somit ist die Erstellung eines Templates funktionslos.

  • SciTE - Neue AU3-Datei immer mit Kodierung "UTF-8 mit BOM" erstellen

    • BugFix
    • 27. Mai 2017 um 14:11

    Personalisierungs-Skript für das Template - Post #1

  • TV-Ton auf Boxen/Minianlage o.ä. - regelbar über Fernbedienung

    • BugFix
    • 26. Mai 2017 um 15:16

    Das Thema ist inzwischen gelöst.

    Ich habe aktive PC-Lautsprecher über den Kopfhörerausgang angeschlossen. Lautstärke lässt sich normal über Fernbedienung regeln und meine Mama versteht endlich wieder, was in ihrer Soap abgeht. :D

  • SciTE - Neue AU3-Datei immer mit Kodierung "UTF-8 mit BOM" erstellen

    • BugFix
    • 26. Mai 2017 um 13:18

    Ja, das ist es - ich gucke mal.

    Die Datei habe ich gar nicht, wird wohl nur installiert, wenn man das anwählt. - Stell die bitte mal ein.

  • SciTE - Neue AU3-Datei immer mit Kodierung "UTF-8 mit BOM" erstellen

    • BugFix
    • 26. Mai 2017 um 13:08
    Zitat von autoiter

    Weißt du vllt. auch eine Möglichkeit, wie man auch über "Explorer-Kontextmenü->Neu->AutoIt v3 Script" Dateien mit UTF8+BOM Kodierung erstellt.

    Ich habe das bei mir gar nicht aktiviert. Schau mal bitte in der Registry, welches Skript dabei aufgerufen wird. Dann schaue ich mir das mal an.

  • SciTE - Neue AU3-Datei immer mit Kodierung "UTF-8 mit BOM" erstellen

    • BugFix
    • 26. Mai 2017 um 11:43

    Es kann sein, dass das Thema mit der neuesten Version von SciTE gar nicht mehr aktuell ist.
    Ich benutze noch die Version 3.4.4 - und in dieser ist keine Möglichkeit per Voreinstellung Dateien immer mit Kodierung "UTF8+BOM" zu erstellen.

    Das läßt sich mit einem Lua-Skript beheben.

    EDIT 2021-04-15

    Da ich nicht nur AutoIt-Skript in SciTE bearbeite/erstelle, fand ich es nun lästig immer das BOM, wenn nicht erforderlich, zu entfernen.

    Darum hier eine neue Version, die ausschliesslich au3-Dateien (Standard) und ggf. per Property festlegbare weiter Dateitypen mit dem BOM versieht.

    Falls ihr die "new_as_utf8bom.lua" in der SciTEStartup.lua eingetragen habt, einfach mit der "CheckBOM.lua" ersetzen.

    Code: CheckBOM.lua
    -- TIME_STAMP   2021-04-15 14:02:19
    
    
    --[[
    After a file was saved, the event OnSave will fired.
    Now will checked:
    - needs this file typ the BOM?
    - If Yes: Has this file already the BOM?
    -          If No: Write the BOM sequence at the beginning of the file
    
    
    If you want register other types as "au3" for set BOM use this property in SciTEUser.properties:
    
    #~ File types, that needs byte order mark
    #~ "au3" is predefined and does not need to be set here
    BOM.File.Types=extension_1 extension_2
    ]]
    
    
    CheckBOM = EventClass:new(Common)
    
    CheckBOM.OnSave = function(self, _file)
        if not self:NeedsBOM(props['FileExt']) then return nil end
        if not self:StartsWithBOM(_file) then scite.MenuCommand(153) end
        return nil
    end
    
    CheckBOM.StartsWithBOM = function(self, _file)
        local ToHex = function(_s)
            if _s == nil then return "DEAD" end
            return (_s:gsub('.', function(_c) return ('%02X'):format(_c:byte()) end))
        end
        local fh = io.open(_file, "rb")
        local read = fh:read(3)
        fh:close()
        return (ToHex(read) == "EFBBBF")
    end
    
    CheckBOM.NeedsBOM = function(self, _ext)
        local extensions = props['BOM.File.Types']:lower()..' au3'
        if extensions:find(_ext:lower()) then return true else return false end
    end
    Alles anzeigen


    Code
    -- TIME_STAMP   2017-05-26 11:19:55
    
    
    NewFile = EventClass:new(Common)
    
    
    function NewFile:OnUpdateUI(filename)
        if props["FileName"] == "" then
            -- set to UTF-8 with BOM
            scite.MenuCommand(153) -- 153 = IDM_ENCODING_UTF8
        end
        return nil  -- default processing
    end
    Alles anzeigen


    Als new_as_utf8bom.lua abspeichern und im Lua-Startup-Skript mit LoadLuaFile("new_as_utf8bom.lua", "..PFAD\\mit\\abschliessendem\\Doppelbackslash\\") eintragen.
    Nach Neustart von SciTE, wird jede neue Datei als UTF8+BOM kodiert.


    EDIT:
    Dasselbe Problem besteht bei Erstellen einer au3-Datei über das Kontextmenü des Explorers.
    Lösung
    - Editor (SciTE oder NPP) als Administrator starten
    - Datei öffnen: C:\Windows\ShellNew\Template.au3
    - Kodierung ändern zu "UTF-8 mit BOM"
    - Datei abspeichern (nochmal prüfen ob Kodierung auch übernommen wurde)

    Jetzt werden auch über das Kontextmenü erstellte Dateien in der UTF-8+BOM Kodierung erzeugt.


    EDIT2: PERSONAILISIERTES TEMPLATE
    Mit dem folgenden Skript wird die Template-Datei personalisiert erstellt.
    Die AutoItversion wird ausgelesen und im Template verwendet. (bisher fix)
    Der User-Name wird aus der Property "UDFCreator" ausgelesen. Ist dort kein Wert gesetzt, wird der PC-Username verwendet.
    Das Standard-Template wird dann überschrieben.

    Wer mag, kann natürlich den Inhalt des Templates noch weiter nach eigenem Geschmack gestalten.
    Dann einfach das Skript starten - fertig.


    AutoIt
    ;-- TIME_STAMP   2017-05-27 13:57:52   v 0.1
    
    
    #RequireAdmin
    
    
    _FileCreateTemplate()
    
    
    
    
    Func _FileCreateTemplate()
        Local $sCreator = _GetAU3Property('UDFCreator', @UserName)
        Local $sWrite = _
        "#cs ----------------------------------------------------------------------------" & @CRLF & @CRLF & _
        " AutoIt Version:  " & @AutoItVersion & @CRLF & _
        " Author:          " & ($sCreator = "Your Name" ? @UserName : $sCreator) & @CRLF & @CRLF & _
        " Script Function: AutoIt script." & @CRLF & @CRLF & _
        "#ce ----------------------------------------------------------------------------" & @CRLF & @CRLF & _
        "; Script Start - Add your code below here" & @CRLF
        Local $sFileName = @WindowsDir & "\ShellNew\Template.au3"
        If Not FileExists($sFileName) Then Exit MsgBox(262192, 'Fehler', 'Es ist keine Datei "Template.au3" installiert!')
        Local $fH = FileOpen($sFileName, 2+128)
        Local $iSucc = FileWrite($fH, $sWrite)
        FileClose($fH)
        Exit MsgBox(($iSucc = 1 ? 262208 : 262192), ($iSucc = 1 ? 'Fertig!' : 'Fehler!'), ($iSucc = 1 ? _
            'Das personalisierte Template wurde erfolgreich geschrieben.' : 'Das Template konnte nicht geschrieben werden.'))
    EndFunc
    
    
    
    
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _GetAU3Property
    ; Description ...: Gets a property value (one-line entry only!). Ask order: 1. SciTEUser.properties 2. au3.properties
    ; Syntax ........: _GetAU3Property($sProperty[, $sDefault = ''])
    ; Parameters ....: $sProperty           - The property name
    ;                  $sDefault            - [optional] A value to use, if none property set. Default is ''.
    ; Return values .: The value of the property (or the default value)
    ; Author ........: BugFix
    ; ===============================================================================================================================
    Func _GetAU3Property($sProperty, $sDefault='')
        Local $sPathUserProp = @LocalAppDataDir & "\AutoIt v3\SciTE\SciTEUser.properties"         ; C:\Users\[USER]\AppData\Local\AutoIt v3\SciTE\SciTEUser.properties
        Local $sPathAU3Prop = StringTrimRight(@AutoItExe, 11) & "SciTE\properties\au3.properties" ; C:\Program Files (x86)\AutoIt3\SciTE\properties\au3.properties
        Local $sRead = '', $sValueReturn = $sDefault, $aMatch
        Local $sPattern = $sProperty & "=([^\r\n]+)"
        If FileExists($sPathUserProp) Then $sRead = FileRead($sPathUserProp)
        $aMatch = StringRegExp($sRead, $sPattern, 1)
        If @error Then
            If FileExists($sPathAU3Prop) Then $sRead = FileRead($sPathAU3Prop)
            $aMatch = StringRegExp($sRead, $sPattern, 1)
            If Not @error Then $sValueReturn = $aMatch[0]
        Else
            $sValueReturn = $aMatch[0]
        EndIf
        Return $sValueReturn
    EndFunc
    Alles anzeigen

    Dateien

    PersonalizeAU3Template.au3 2,73 kB – 593 Downloads CheckBOM.lua 1,19 kB – 423 Downloads
  • Chinesiche Zeichen

    • BugFix
    • 26. Mai 2017 um 11:32
    Code
    Dateikodierung          Outputkodierung    korrekte Unicodeausgabe mit
    -----------------------------------------------------------------
      Systemkodierung (= Wert von code.page)
    
    
      UTF8 (code.page=65001)     65001          ConsoleWrite()
      UTF8+BOM                   65001          ConsoleWrite(BinaryToString(StringToBinary($sStr, 4), 1))

    In beiden Einstellungen (code.page und output.code.page) UTF8 gesetzt (65001) - dann klappt es normal mit ConsoleWrite.
    UTF8+BOM läßt sich (zumindest in ScITE 3.4.4, gibt eine neuere Version) gar nicht explizit als Voreinstellung für neue Datei wählen.

  • Select...EndSelect: Case-Fälle aus *.ini-Datei auslesen

    • BugFix
    • 26. Mai 2017 um 10:23

    @Crusoe: Ich denke, das Problem liegt darin, dass du dich gedanklich auf ein Select-Case als Lösung eingeschossen hast. Aber letztlich ist die Iteration durch ein Array doch gar nichts Anderes. In jedem Schritt wird ein "Case" abgearbeitet, trifft der Fall zu, wird die erforderliche Aktion ausgeführt, wenn nicht, gehts weiter. ;)

  • Chinesiche Zeichen

    • BugFix
    • 26. Mai 2017 um 10:15

    OK, leider ist die Codepage-Einstellung in SciTE nicht wirklich nachvollziehbar. Ich habe code.page=65001 und output.code.page=65001 gesetzt, neu erstellte Dateien sollten also UTF8+BOM sein. Sind sie das aber? Schaue ich mir über das Menü <Datei> die Kodierung an, steht dort "Systemkodierung", statt "UTF-8 mit Markierung".

    Und nun das verwirrende Spiel:
    Schreibe ich jetzt in der Datei mit "Systemkodierung" Consolewrite("美好的一天"), wird es korrekt ausgegeben.
    Setze ich die Datei aber über das Menü Kodierung auf UTF8+BOM, erhalte ich nur Fragezeichen und muß die Konsolenausgabe über eine extra Funktion leiten, um die Korrekte Ausgabe zu erhalten.

    AutoIt
    Func _ConsoleWriteBin($sStr)
        Return ConsoleWrite(BinaryToString(StringToBinary($sStr, 4), 1))
    EndFunc

    Früher war das alles egal, weil AutoIt-Skripte auch mit beliebiger Kodierung ausgeführt wurden. Nach dem letzten Update ist aber explizit UTF8+BOM erforderlich.

  • Globale Variable vermeiden. Methoden?

    • BugFix
    • 25. Mai 2017 um 14:13

    Wenn man denn wirklich Globale Variablen vermeiden will, kann man das über ein Variablenmanagement tun.

  • Chinesiche Zeichen

    • BugFix
    • 24. Mai 2017 um 23:22

    Schreibe in die SciTEUser.properties den Eintrag output.code.page=65001 - dann klappt's auch mit den Chinesen. 8o

  • Taschenrechner Embedded

    • BugFix
    • 20. Mai 2017 um 14:26
    Zitat von Oscar

    darf erst nach dem wechseln der Ansicht

    Oops, na klar. Das hatte ich glatt vergessen zu verschieben, weil ich in erster Version nur zwischen mit/ohne Menüleiste geswitcht hatte. Ich ändere mal im Startpost.

  • Taschenrechner Embedded

    • BugFix
    • 19. Mai 2017 um 21:38

    OK, ich nutze Windows 7. Möglicherweise kann Win10 nicht mit WinMenuSelectItem umgehen. Kannst du ja mal mit anderen Standard-Windowsanwendungen testen (Notepad etc.).

  • Taschenrechner Embedded

    • BugFix
    • 19. Mai 2017 um 18:17

    Ich habe Tools, die ich im Laufe der Zeit für meine Kollegen geschrieben habe, nun mal in einer GUI eingebunden. Da auch der Windows Taschenrechner Verwendung findet, habe ich diesen ebenfalls in die Oberfläche integriert - braucht er nicht mehr extra geöffnet werden.
    Falls ihr das brauchen könnt:

    EDIT: Fehler beim Abfragen der Clientgröße behoben - Danke Oscar.

    AutoIt
    ;==============================================================================================
    $iStartModus = 3         ; 1 - Standard, 2 - Wissenschaftlich, 3 - Programmierer, 4 - Statistik
    $bVersteckeMenu = True   ; True(Default), False
    ;==============================================================================================
    
    
    $hGUIEmbedded = GUICreate('Embedded Calculator', 600, 400, -1, -1, BitOr($GUI_SS_DEFAULT_GUI,$WS_CLIPCHILDREN))
    $aCalc = _StartCalcHideMnu($iStartModus, $bVersteckeMenu)
    _EmbedCalc($hGUIEmbedded, $aCalc)
    GUiSetState(@SW_SHOW, $hGUIEmbedded)
    
    
    WinSetState($aCalc[1], '', @SW_SHOW)
    WinActivate($aCalc[1])
    
    
    While 1
        $msg = GUIGetMsg()
        Switch $msg
            Case $GUI_EVENT_CLOSE
                ProcessClose($aCalc[0])
                Exit
        EndSwitch
    WEnd
    
    
    Func _EmbedCalc($hWndGui, $aCalc)
    	_WinAPI_SetParent($aCalc[1], $hWndGui)
    	_WinAPI_SetWindowLong($aCalc[1], $GWL_STYLE, $WS_CLIPSIBLINGS)
    	_WinAPI_SetWindowLong($aCalc[1], $GWL_HWNDPARENT, $hWndGui)
    	_WinAPI_SetWindowPos($aCalc[1], 0, 0, 0, $aCalc[2], $aCalc[3], $SWP_SHOWWINDOW)
    EndFunc
    
    
    ; requires: #include <GuiMenu.au3>
    Func _StartCalcHideMnu($iMode=1, $bHide=True)
    	; $iMode: 1 - Standard, 2 - Wissenschaftlich, 3 - Programmierer, 4 - Statistik
    	Local $aMode[5] = ['','&Standard','&Wissenschaftlich','&Programmierer','St&atistik']
    	Local $PID = Run(@SystemDir & '\calc.exe')
    	Local $hCalc = WinWaitActive('[CLASS:CalcFrame]', '', 10)
    	If Not IsHWnd($hCalc) Then Return SetError(1,0,0)
    	; gewählten Mode aktivieren
    	$iMode = $iMode < 1 ? 1 : ($iMode > 4 ? 4 : $iMode)
    	WinMenuSelectItem($hCalc, '', '&Ansicht', $aMode[$iMode])
    	Local $aSize = WinGetClientSize($hCalc)
    	Local $hMnu, $aItem0, $iHMnu
    	; Menü Höhe ermitteln
    	$hMnu = _GUICtrlMenu_GetMenu($hCalc)
    	$aItem0 = _GUICtrlMenu_GetItemRect($hCalc, $hMnu, 0)
    	$iHMnu = $aItem0[3] - $aItem0[1]
    	; Menü - Item entfernen
    	If $bHide Then
    		For $i = _GUICtrlMenu_GetItemCount($hMnu) -1 To 0 Step -1
    			_GUICtrlMenu_RemoveMenu($hMnu, $i)
    		Next
    		$iHMnu = 0
    	EndIf
    	Local $aRet[4] = [$PID,$hCalc,$aSize[0],$aSize[1]+$iHMnu]
    	Return $aRet
    EndFunc
    Alles anzeigen


    PS: Ich würde ja gerne die calc.exe versteckt starten - aber leider wird @SW_HIDE beim Aufruf ignoriert (deshalb jetzt auch nicht im Code). Falls ihr da eine Lösung kennt, lasst hören.

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™