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

  • Dualboot von 2 HDD

    • Bitnugger
    • 23. Juli 2018 um 00:07

    Ich würde es dann auch wieder mit GRUB machen.

    Zitat von BugFix

    Wichtig ist mir, dass die nicht aktive HDD für die andere HDD auch nicht sichtbar ist.

    So in etwa würde ich es machen:

    GRUB auf einem USB-Stick installieren (grubinstall.exe)

    Windows 10 starten

    In den Energieeinstellungen den Schnellstart-Hybridmodus deaktivieren

    HDD, auf dem Windows 7 installiert werden soll, im Gerätemanager deaktivieren und einen Neustart ausführen

    HDD mit Windows 10 im BIOS deaktiveren

    Windows 7 auf der anderen HDD installieren

    In den Energieeinstellungen den Schnellstart-Hybridmodus deaktivieren

    HDD, auf dem Windows 10 installiert ist, in Windows 7 im Gerätemanager deaktiveren und einen Neustart ausführen

    HDD mit Windows 10 im BIOS wieder aktiveren

    grub.cfg anpassen

    Jetzt solltest du vom USB-Stick via GRUB Windows 7/10 starten können...

  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • Bitnugger
    • 22. Juli 2018 um 22:45

    autoiter

    alpines schreibt hier ja, dass es in späteren Versionen zu Problemen kommen kann... möglich wäre sogar, dass die Funktion dann evtl. gar nicht aufgerufen wird.

    PS: HotKeySet akzeptiert auch Funktionen mit Parameter, ignoriert diese aber, da sie nicht an die Funktion übergeben werden können, wenn das ensprechende HotKey gedrückt wurde.

    Zitat von alpines

    Wenn HotKeySet nur Funktionen akzeptiert die parameterlos sind solltest du dabei bleiben,

    da ansonsten in einer späteren Version bspw. das Skript komplett crashen kann oder es einfach buggy läuft.

    Zitat von autoiter

    Aber das allgemein abzulehnen halte ich für falsch.

    Stimmt... soll und kann jeder machen, wie er will, wenn es funktioniert - und sich dann aber auch nicht wundern, wenn es in späteren Version nicht funktioniert.

    Ich jedenfalls bevorzuge "saubere Lösungen" und mache es deshalb lieber so, wie in meinem Post #17 in Bild 2 zu sehen ist.

  • AutoIt3Wrapper - StripOnly/StripFunc Error: Found Call() statement using unsolvable Func

    • Bitnugger
    • 22. Juli 2018 um 22:00

    Dann versuche es mal so...

    AutoIt
    ;-- TIME_STAMP   2018-07-22 22:21:50   v 0.1
    
    #AutoIt3Wrapper_UseX64=y
    #AutoIt3Wrapper_Run_Au3Stripper=y
    #Au3Stripper_Parameters=/so /pe /rm
    
    Global $__AuThread_sTmpFile
    
    Global Const $__aAuThread_Funcs = [__AuThread_Func1, __AuThread_Func2, __AuThread_Func3]
    
    Func _AuThread_Startup()
        Local $iIndex
        ; was this process called for a thread?
        If $CmdLine[0] = 2 And $CmdLine[1] = "--au-thread" Then
            AdlibRegister("__AuThread_Checkloop")
            For $i = 0 To UBound($__aAuThread_Funcs) -1 Step 1
                If FuncName($__aAuThread_Funcs[$i]) = $CmdLine[2] Then
                    Call(FuncName($__aAuThread_Funcs[$i]))
                    Exit
                EndIf
            Next
        Else
            ; it's the main thread
            OnAutoItExitRegister("__AuThread_OnExit")
            FileDelete($__AuThread_sTmpFile)
            IniWrite($__AuThread_sTmpFile, "main", "pid", @AutoItPID)
        EndIf
    EndFunc  ;==>_AuThread_Startup
    
    Func __AuThread_Checkloop()
        ; Do somesthing ...
    EndFunc  ;==>__AuThread_Checkloop
    
    Func __AuThread_OnExit()
        ; Do somesthing ...
    EndFunc  ;==>__AuThread_OnExit
    
    Func __AuThread_Func1()
        ; Do somesthing ...
    EndFunc  ;==>__AuThread_Func1
    
    Func __AuThread_Func2()
        ; Do somesthing ...
    EndFunc  ;==>__AuThread_Func2
    
    Func __AuThread_Func3()
        ; Do somesthing ...
    EndFunc  ;==>__AuThread_Func3
    Alles anzeigen
  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • Bitnugger
    • 22. Juli 2018 um 21:02

    Das erste Bild zeigt, wie es NICHT gemacht werden sollte... und wenn Scite4AutoIt3 benutzt wird, so wie bei mir, wird das Script durch AU3Check beendet, weil die Variable $sTitle nicht deklariert wurde.

    Das zweite Bild zeigt, wie es ohne Probleme funktioniert...

    Zitat von xTcisloVe

    Ich verstehe nicht ganz wieso das mit dem Stumm für ein Problem ist? Ich habe doch nirgends "Stumm für:" definiert sondern ich suche einfach nach dem Fenstertitel und der sollte doch unabhängig von Stumm für: oder Mute for: immer enthalten sein oder irre ich da?

    Du suchst nach dem Fenstertitel... und wo suchst du danach bzw. wo soll dieser enthalten sein?

    Den suchst du in allen Buttons, die den ClassName "ToolBarWindow32" haben.

    Die Texte für diese Buttons sind in der sndvol.exe inkl. Platzhalter (%1 bzw. %s) enthalten und sind je nach eingestellter Sprache in Windows entsprechend übersetzt.

    Hier mal die Texte in deutscher Sprache inkl. Platzhalter...

    > ResourceLanguages => 1, 1031

    + $iLocale => 1031

    + Language => Deutsch (Deutschland)

    - German string with ID 500 for SndVol.exe : Lautstärke

    - German string with ID 501 for SndVol.exe : Stumm: %1

    - German string with ID 502 for SndVol.exe : Lautstärke für %1

    - German string with ID 503 for SndVol.exe : Stumm für %1

    - German string with ID 504 for SndVol.exe : Name nicht verfügbar

    - German string with ID 505 for SndVol.exe : Anwendungs-Lautstärkeregler für %s anzeigen

    - German string with ID 506 for SndVol.exe : Lautstärkemixer - %s

    - German string with ID 508 for SndVol.exe : Stummschaltung für %1 aufheben

    - German string with ID 509 for SndVol.exe : %1 wird gehört.

    Würdest du dein Windows nun auf englische Sprache umstellen, wäre der Text für "Stumm für %1" dann "Mute for %1".

    Du gehst nun hin und übergibst der Funktion GetAllWindowsControls u.A. den Titel des aktiven Fenster...

    Ok, Firefox ist nun das aktive Window und der WindowTitle ist:

    _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten. - Skripte - AutoIt.de - Das deutschsprachige Forum. - Mozilla Firefox

    Im Lautstärkemixer (sndvol.exe) sind dann z.B. folgende Anwendungen zu finden: Systemsounds, Mozilla Firefox, Ditto, Barbara Mason - Give Me Your Love

    Systemsounds und Mozilla Firefox sollte klar sein... Ditto ist eine Erweiterung für das Clipboard und für AIMP (MP3-Player) wird der Titel des aktuell abgespielten Songs angezeigt.

    Bei den Buttons für diese Anwendungen, die angeklickt werden müssen, damit für diese das Mute getogelt wird, wurde der Platzhalter durch den angezeigten Namen der Anwendung ersetzt...

    deutsch: Stumm für Mozilla Firefox

    englisch: Mute for Mozilla Firefox

    ...

    Die Variablen $text und $sStringIncludes enthalten dann folgende Texte:

    $text            = "Stumm für Mozilla Firefox"$sStringIncludes = "_MuteActiveWindow - Sound vom aktiven Fenster stumm schalten. - Skripte - AutoIt.de - Das deutschsprachige Forum. - Mozilla Firefox"

    Du gehst nun hin...

    AutoIt
    If StringLen($sStringIncludes) > 0 Then
                _CW("- $text                      --> " & $text)
                If Not StringInStr($text, $sStringIncludes) Then
                    $iTotalCounter += 1
                    ContinueLoop
                EndIf
            EndIf
    
            If IsArray($aPos) Then ; Hä???
                If $text <> "" Then Return "[ClassNN:" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "]"
            EndIf
    Alles anzeigen

    ...und prüfst, ob der WindowTitle in einem der Buttontexte enthalten ist.

    If Not StringInStr($text, $sStringIncludes) Then

    Wurde er gefunden, hängst du die ermittelte Instance (durch das %19s mit 4 Leerzeichen) an den ClassName an und gibst ihn als Ergebnis zurück und filterst dann die Leerzeichen wieder aus. Für Firefox wäre es der Button mit dem Text "Stumm für Mozilla Firefox"

    If $text <> "" Then Return "[ClassNN:" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "]"

    Merkst du was? ;)


    pasted-from-clipboard.png pasted-from-clipboard.png

    Ich habe übrigens ein AutoHotkey-Script gefunden, mit dem du auch genau das machen kannst, mit dem Unterschied, dass dieses den Lautstärkemixer dabei nicht öffnet.

    https://github.com/kristoffer-tvera/mute-current-application

  • Kann man um einen String "replacen"?

    • Bitnugger
    • 21. Juli 2018 um 20:33
    Zitat von dieselwiesel

    Wenn nach der Klammer auf ein Fragezeichen steht (? ...) (ausser vllt bei (?<name> ... ) ) kann man es nicht als "Zeiger" nutzen?!

    Jepp...

    Zitat von dieselwiesel

    Mit dem Thema kann man sich stunden-/tagelang befassen

    Ich befasse mich schon seit einigen Jahren damit und fühle mich immer noch wie ein blutiger Anfänger. 8o

    Zitat von dieselwiesel

    Hab da noch eins gefunden...

    AutoIt
    Local $sOut5 = 'HID\VID_046D&PID_C526&MI_01&COL01\7&189E6BF7&0&0000        : HID-konformes Benutzersteuergerät' & @CRLF
    Local $sRx5 = StringRegExpReplace($sOut5, '(?s)(.+?)(?: |:).*', '\1')
    ConsoleWrite('$sRx5 = "' & $sRx5 & '"' & @CRLF)
    
    Local $sOut6 = 'USBSTOR\DISK&VEN_GENERIC-&PROD_COMPACT_FLASH&REV_1.01\7&2276EB9E&0&058F63646476&1:Generic- Compact Flash USB Device' & @CRLF
    Local $sRx6 = StringRegExpReplace($sOut6, '(?s)(.+?)(?: |:).*', '\1')
    ConsoleWrite('$sRx6 = "' & $sRx6 & '"' & @CRLF)
  • _MuteActiveWindow - Sound vom aktiven Fenster stumm schalten.

    • Bitnugger
    • 21. Juli 2018 um 19:47

    HotKeySet("+!m", "_MuteActiveWindow")

    Das kann nicht funktionieren, weil die mit HotKey aufgerufene Funktion keinen Parameter haben darf und $sTitle in dem Fall nicht deklariert ist.

    AutoIt-Hilfe zu HotKeySet: The called function can not be given parameters. They will be ignored.

    Ein weiteres Problem ist, dass $sStringIncludes (der WindowTitle) in sehr vielen Fällen nicht gefunden wird - habe es z.B. mit FireFox hier auf dieser Seite getestet.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    If Not StringInStr($text, $sStringIncludes) Then ...

    Die Chancen, dass $sStringIncludes in $text gefunden wird, stehen also sehr schlecht.

    Damit es zumindest zufriedenstellend funktionieren kann, müsste der Teilstring in $text, der nach dem "Stumm für " steht, in $sStringIncludes gesucht werden, und nicht umgekehrt.

    Nächstes Problem wäre, wenn der User sein Windows in einer anderen Sprache (z.B. EN) nutzt... dann wird aus "Stumm für " nämlich "Mute for ". ;)

    Auch mit dem HotKey kann es hakeln, wenn die Funktion erneut aufgerufen wird, bevor sie komplett durchlaufen wurde.

    Ich war mal so frei und habe deine "UDF" (wo sind die UDF-Header?) umgemodelt... du wirst vermutlich nur wenig davon verstehen, aber schau es dir einfach mal an.

    Dateien

    _MuteActiveWindow.au3 7,72 kB – 505 Downloads _MuteActiveWindow_Demo.au3 2,16 kB – 491 Downloads
  • Array letzter Eintrag

    • Bitnugger
    • 21. Juli 2018 um 00:55
    Zitat von Vitaq

    Dank dir hab ichs jetzt

    Mein Einzeiler in Post #17 liefert genau dasselbe Ergebnis, wie dein Script in Post #19, dass ich, wenn es denn unbedingt mit Array sein soll, so schreiben würde...

    AutoIt
    Local $aArray = FileReadToArray ("C:\Users\S\Desktop\a\1.txt")
    If Not IsArray($aArray) Then
        MsgBox(4096,"Fehler", "Fehler beim einlesen der Daten.")
    ElseIf $aArray[Ubound($aArray)-1] = "3" Then
        MsgBox(64, @ScriptName, 'Letzte Zeile ist "3"!')
    Else
        MsgBox(48, @ScriptName, 'Letzte Zeile ist nicht "3"!')
    EndIf
    Zitat von Vitaq

    Ich würde ja nur gerne wissen wo der Fehler ist und was bei meinem Script nicht passt.

    AutoIt
    #include <File.au3>
    
    Global $aArray_Static[1] = ["3"]
    
    Example()
    
    Func Example()
        Local $sSourcePath = "C:\Users\S\Desktop\a\"
        Local $aFilesInFolder = _FileListToArray($sSourcePath, "*.txt" )
        Local $aRecords, $iIndex, $iError
        For $i = 1 To $aFilesInFolder[0]
            ToolTip('Scan file ' & $sSourcePath & $aFilesInFolder[$i])
            If Not _FileReadToArray($sSourcePath & $aFilesInFolder[$i], $aRecords) Then
                $iError = 1
                MsgBox(4096,"Fehler", "Fehler beim einlesen der Daten." & @CRLF & _
                    '--> ' & $sSourcePath & $aFilesInFolder[$i])
                ExitLoop
            Else
                For $j = 0 To UBound($aArray_Static) -1
                    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ; wenn das Gesuchte in irgendeiner Zeile stehen darf
                    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ;~                 $iIndex = _ArraySearch($aRecords, $aArray_Static[$j])
    ;~                 If $iIndex > -1 Then
    ;~                     MsgBox(0, "Found!", $aArray_Static[$j] & ' in line ' & $iIndex + 1 & @CRLF & _
    ;~                         '--> ' & $sSourcePath & $aFilesInFolder[$i])
    ;~                 EndIf
    
                    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    ; wenn das Gesuchte in der letzten Zeile stehen muss
                    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    If $aRecords[$aRecords[0]] = $aArray_Static[$j] Then
                        MsgBox(0, "Found!", $aArray_Static[$j] & ' in last line (' & $aRecords[0] + 1 & ')' & @CRLF & _
                            '--> ' & $sSourcePath & $aFilesInFolder[$i])
                    EndIf
                Next
            EndIf
        Next
        ToolTip('')
        If $iError Then Exit $i
    EndFunc   ;==>Example
    Alles anzeigen
  • Kann man um einen String "replacen"?

    • Bitnugger
    • 20. Juli 2018 um 23:53
    AutoIt
    Local $sOut = 'HID\VID_046D&PID_C526&MI_01&COL01\7&189E6BF7&0&0000        : HID-konformes Benutzersteuergerät' & @CRLF
    Local $sRx1 = StringRegExpReplace($sOut, '(?s)(.+?)  .*', '\1')
    ConsoleWrite('$sRx1 = "' & $sRx1 & '"' & @CRLF)
    Local $sRx2 = StringRegExpReplace($sOut, '(?s)(.+?)\s\s.*', '\1')
    ConsoleWrite('$sRx2 = "' & $sRx2 & '"' & @CRLF)
    Local $sRx3 = StringRegExpReplace($sOut, '(?s)(.+?)\s{2,}.+', '\1')
    ConsoleWrite('$sRx3 = "' & $sRx3 & '"' & @CRLF)
    Zitat von dieselwiesel

    Also je mehr Klammern, desto mehr "Zeiger"...

    Nicht unbedingt, denn es gibt auch non captured groups und spezielle Optionen (oben im Beispiel das (?s)), die in Klammern angegeben werden.

    Hier ein Beispiel...

    AutoIt
    Local $sOut = 'HID\VID_046D&PID_C526&MI_01&COL01\7&189E6BF7&0&0000        : HID-konformes Benutzersteuergerät' & @CRLF
    Local $sRx4 = StringRegExpReplace($sOut, '(?s)(.+?)(?:VID)(.+?)\s{2,}.+', '\1\2')
    ConsoleWrite('$sRx4 = "' & $sRx4 & '"' & @CRLF)

    (?s)    = Single-line or DotAll (Option)

    (.+?)   = captured groups

    (?:VID) = non captured group

  • Array letzter Eintrag

    • Bitnugger
    • 20. Juli 2018 um 21:25

    Lernresistenz belohne nur ungern... denn wie es funktioniert, hat dir alpines doch schon geschrieben.

    Zitat von Vitaq

    Also MSgBox wenn die "3" am Ende steht...

    AutoIt
    If FileReadLine(@DesktopDir & "\1.txt", -1) = "3" Then MsgBox(64, @ScriptName, 'Letzte Zeile ist "3"!')
  • GuiCtrlVolume

    • Bitnugger
    • 20. Juli 2018 um 18:09
    Zitat von Oscar

    Kannst Du mal diese Funktion ausprobieren:

    Habe ich... aber dadurch ändert sich leider nichts. Es muss aber etwas mit der WinProc-Funktion zu tun haben, denn bei diesem Beispiel-Script habe ich den Effekt nicht!

    AutoIt
    ;-- TIME_STAMP   2018-07-20 17:43:15   v 0.1
    
    #Region    ;************ Includes ************
    #Include <StaticConstants.au3>
    #Include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    ;~ #include <WinAPIConv.au3>
    #EndRegion ;************ Includes ************
    
    Global Const $iBkColor = 0xFFDDAA
    Global $idLabel_Volume
    
    Example()
    
    Func Example()
        Local $hGUI = GUICreate("My GUI") ; will create a dialog box that when displayed is centered
        GUISetBkColor($iBkColor)
    
        $idLabel_Volume = GUICtrlCreateLabel(StringFormat('%3s%', 0), 125, 150, 160, 70, BitOR($GUI_SS_DEFAULT_LABEL, $SS_SUNKEN))
        GUICtrlSetColor(-1, BitXOR($iBkColor, 0xFFFFFF))
        GUICtrlSetFont(-1, 48, 800, 0, 'Courier New')
    
        Local $aClientSize = WinGetClientSize($hGUI)
        Local $sInfo = '        Mousewheel: ± 1' & @CRLF & 'Shift + Mousewheel: ± 5' & @CRLF & ' Ctrl + Mousewheel: ± 10'
        GUICtrlCreateLabel($sInfo, 10, $aClientSize[1] - 90, 400, 80)
        GUICtrlSetColor(-1, BitXOR($iBkColor, 0x888888))
        GUICtrlSetFont(-1, 18, 800, 0, 'Courier New')
    
        GUISetState(@SW_SHOW) ; will display an empty dialog box
    
        GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL")
    
        ; Loop until the user exits.
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    ExitLoop
    
            EndSwitch
        WEnd
    EndFunc   ;==>Example
    
    Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg, $lParam
        Local Static $iVolume = 0, $MK_SHIFT = 0x0004, $MK_CONTROL = 0x0008
    
        ; $wParam
        ; The low-order word indicates whether various virtual keys are down.
        ; The high-order word indicates the distance the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120.
        ; A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user.
    
        ; $lParam
        ; The low-order word specifies the x-coordinate of the pointer, relative to the upper-left corner of the screen.
        ; The high-order word specifies the y-coordinate of the pointer, relative to the upper-left corner of the screen.
    
        Local $iWeel, $aCursorInfo = GUIGetCursorInfo($hWnd)
        If Not @error And $aCursorInfo[4] = $idLabel_Volume Then
            $iWeel = BitShift($wParam, 16) ; _WinAPI_HiWord
    
            Switch BitAND($wParam, 0x0000FFFF) ; _WinAPI_LoWord
                Case $MK_SHIFT
                    $iVolume += $iWeel > 0 ? 5 : -5
                Case $MK_CONTROL
                    $iVolume += $iWeel > 0 ? 10 : -10
                Case Else
                    $iVolume += $iWeel > 0 ? 1 : -1
            EndSwitch
    
            $iVolume = $iVolume < 0 ? 0 : $iVolume > 100 ? 100 : $iVolume
            GUICtrlSetData($idLabel_Volume, StringFormat('%3s%', $iVolume))
        EndIf
    
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_MOUSEWHEEL
    Alles anzeigen
  • Kann man um einen String "replacen"?

    • Bitnugger
    • 20. Juli 2018 um 16:32
    Zitat von Simpel

    Das Beispiel von Churanos ohne Gruppen sondern als ein Gesamtrückgabestring:

    ^(USB\\VID\_[\w\d]+\&PID\_[\w\d]+\\[\w\d\&]+)

    Code
    ;|<- Captured Group 1                     ->|
    ^(USB\\VID\_[\w\d]+\&PID\_[\w\d]+\\[\w\d\&]+)
    Zitat von dieselwiesel

    Wenn ich das richtig verstanden habe ist das $1 in dem Moment wie eine Variable zu betrachten?!

    Wenn du so willst... wobei du anstelle $1 aber auch \1 schreiben kannst. Ich würde sie aber eher als Zeiger betiteln, die als Referenzen für die captured groups stehen, die du als Ergebnis haben willst.

    AutoIt
    Local $sDate = '12.04.1968'
    $sDate = StringRegExpReplace($sDate, '(\d{2}).(\d{2}).(\d{4})', '\3-\1-\2')
    ConsoleWrite('$sDate = ' & $sDate & @CRLF)
  • Frage - SQL Insert

    • Bitnugger
    • 20. Juli 2018 um 16:08
    Zitat von Sonderbaar

    Aber um Heidi mal in Unschuld zu waschen, selbst mit einem direkten Insert in die Tabelle kriege ich genauso (viele/wenige) Datensätze rein wie mit Heidi... (stand ja schon im Erstellungsthread)

    Ja, da hast du geschrieben...

    Zitat von Sonderbaar

    Genauso verhält sich auch, wenn ich ohne SQL-File direkt in die Tabelle den Insert mit _SQL_Execute pumpen will... genau die selbe Anzahl an Datensätzen wie über Heidi.

    ...was den Schluss nahelegt, dass du bei beiden Vorgehensweisen denselben Fehler machst. Ich denke, alpines hat darauf bereits die richtige Antwort geliefert.

    Zitat von alpines

    Probier sie doch mal Schritt für Schritt einzusetzen und schau welchen Eintrag er nicht reinschreibt, vielleicht sind diese ja schlecht formatiert?

  • Powershell Cmdlet Get-Service "Windows Defender Antivirus Service"

    • Bitnugger
    • 20. Juli 2018 um 15:51
    Zitat von co_steffl

    Hier mal der Code von Bitnugger.

    Schreibe demnächst bitte dabei, dass du den Code geändert hast.

    Zitat von co_steffl

    StdoutRead liefert mir nun keine Daten.

    In dem Fall liest du dann einfach StderrRead aus... hier ein Beispiel nach der Art, wie es _mk_ vorgeschlagen hat.

    AutoIt
    ;-- TIME_STAMP   2018-07-20 15:49:22   v 0.1
    
    Local $sCommand = "(Get-Service -Name gamingxxl).Status"
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sCommand = "' & $sCommand & '"'& @CRLF & _
        _RunPSCommand($sCommand) & @CRLF & "!@ " & @TAB & "#Error: " & @error & @CRLF & @CRLF)
    
    $sCommand = "(Get-Service -Name windefend).Status"
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sCommand = "' & $sCommand & '"' & @CRLF & _
        _RunPSCommand($sCommand) & @CRLF & "!@ " & @TAB & "#Error: " & @error & @CRLF & @CRLF)
    
    Func _RunPSCommand($sCommand)
        Local $iPID = Run("PowerShell.exe -Command " & $sCommand, @ScriptDir, @SW_HIDE, 6) ; 6 = BitOR($STDERR_CHILD, $STDOUT_CHILD)
        If Not $iPID Then Return SetError(1, 0, False)
        ProcessWaitClose($iPID)
        Local $sStderrOutput = StringStripWS(StderrRead($iPID), 2)
        Local $sStdOutput = StringStripWS(StdoutRead($iPID), 2)
        Return SetError($sStderrOutput ? 1 : 0, 0, $sStderrOutput ? $sStderrOutput : $sStdOutput)
    EndFunc   ;==>_RunPSCommand
    Alles anzeigen
  • Powershell Cmdlet Get-Service "Windows Defender Antivirus Service"

    • Bitnugger
    • 19. Juli 2018 um 18:48

    Das geht auch ohne eine temporäre Datei anzulegen und auszuführen...

    AutoIt
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & "   RunCmdlet()" & RunCmdlet() & @CRLF & "!@ " & @TAB & "#Error: " & @error & @CRLF)
    
    Func RunCmdlet()
        Local $iPid = Run("PowerShell.exe -Command Get-Service 'Windows Defender Antivirus Service'", @ScriptDir, @SW_HIDE, 2)
        If Not $iPid Then Return SetError(1, 0, False)
        ProcessWaitClose($iPid)
        Return StringStripWS(StdoutRead($iPid), 2)
    EndFunc   ;==>RunCmdlet
  • GuiCtrlVolume

    • Bitnugger
    • 19. Juli 2018 um 18:11

    Ja, das mit "_WinAPI_HiWord" und "_WinAPI_LoWord" findest du im MSDN... aber richtig, solche wichtigen Details sollten auch in der AutoIt-Hilfe stehen.

    Sehr schön, mit der neuen Version zickt jetzt nur noch die Prozentanzeige rechts neben dem linken Control. Bewege ich das Mausrad, flackert sie kurz weiß auf, klicke ich mit der linken Mastaste in das Control, wird und bleibt es weiß.

    pasted-from-clipboard.png

  • Powershell Cmdlet Get-Service "Windows Defender Antivirus Service"

    • Bitnugger
    • 19. Juli 2018 um 17:28

    Meine :Glaskugel:fragt: Wo ist dein Script?

    https://technet.microsoft.com/de-de/library/…v=wps.630).aspx

  • Frage - SQL Insert

    • Bitnugger
    • 19. Juli 2018 um 16:52

    autoBert - ja, du hast Recht, meine Vermutung war falsch. AspirinJunkie hat es aber auf den Punkt gebracht...

    Edit: Wegen der mundgerechten Häppchen... da fällt mir gerade ein, dass ich so ein Problem auch mal hatte und dann die Inserts in kleinere Portionen zerlegt habe. Die zu konvertierende Datei words.txt (eng. Wörterbuch) enthielt 466544 Wörter mit unterschiedlicher Länge... und so in etwa habe ich es dann gemacht...

    AutoIt
    #include <SQLite.au3>
    
    Global $hSQL, $g_sAU3_Sharred_Files = EnvGet('AU3_Sharred_Files') ; F:\_Scripts\AutoIt\Shared files\
    
    _Convert()
    
    Func _Convert()
        _SQLite_Startup($g_sAU3_Sharred_Files & "sqlite3.dll", False, 1)
        $hSQL = _SQLite_Open('m:\english.sqlite')
        _SQLite_Exec($hSQL, "CREATE TABLE english (ID INTEGER PRIMARY KEY, Word TEXT);")
        
        Local $sInsert, $aArray = FileReadToArray('f:\_Scripts\AutoIt\Dictionary\words.txt')
        
        For $i = 0 To UBound($aArray) -1 Step 1
            $sInsert = ''
            For $j = 1 To 100 Step 1
                If $i < UBound($aArray) -1 And $j < 100 Then
                    $sInsert &= '(' & _SQLite_FastEscape($aArray[$i]) & '), '
                Else
                    $sInsert &= '(' & _SQLite_FastEscape($aArray[$i]) & ')'
                    ExitLoop
                EndIf
                $i += 1
            Next
            _SQLite_Exec(-1, "INSERT INTO english VALUES "&$sInsert&";")
            If @error Then Exit
        Next
        
        _SQLite_Close($hSQL)
        _SQLite_Shutdown()
    EndFunc
    Alles anzeigen
  • Frage - SQL Insert

    • Bitnugger
    • 19. Juli 2018 um 13:20
    Zitat von Sonderbaar

    SQL würde Duplikate doch nur rausschmeißen, wenn ein Primarykey gesetzt ist oder bin ich auf dem Holzweg?

    Ich vermute, wenn du keinen PrimaryKey setzt, wird es auch keine Duplikate geben, sondern bereits vorhandene Einträge werden dann einfach überschrieben.

  • GuiCtrlVolume

    • Bitnugger
    • 19. Juli 2018 um 13:08
    Zitat von Oscar

    Hmmm...kannst Du es mal mit dieser WindowProc versuchen:

    Ja, das ist schon fast perfekt... jetzt ist es nur noch die Prozentanzeige rechts neben dem linken Control, die weiß wird bzw. flackert.

    Hehe... also wenn ich einen Linksklick auf das linke Control mache, wird die Prozentanzeige weiß, das aber nur auf dem primären Monitor, auf dem sekundären nicht! Drehe ich das Mausrad, flackert sie.

    Mir ist aber noch ein böser Fehler aufgefallen: Der Laustärkepegel läßt sich nur dann mit dem Mausrad ändern, wenn sich das Fenster auf dem primären Monitor befindet.

  • GuiCtrlVolume

    • Bitnugger
    • 19. Juli 2018 um 01:08

    Unter Windows 7 funktioniert es wie es soll, doch wenn ich unter Windows 10 in dem Example einen Linksklick auf eines der Controls mache, sehe ich nur noch eine weiße Fläche und erst wenn ich das Mausrad bewege, erscheint es wieder wie es soll, blinkt dabei aber auch bei jeder Änderung kurz weiß auf. Bei dem Regler in ChipHunter habe ich diesen Effekt nicht...

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™