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

Beiträge von casi4712

  • Frage zur Screenshotfunktion

    • casi4712
    • 9. September 2022 um 13:37

    Das wäre ja jetzt einfacher als ich zu hoffen gewagt hätte, ich meine mit ExitLoop hatte ich schon verucht, aber ok ohne IF Anweisung.


    Danke

  • Frage zur Screenshotfunktion

    • casi4712
    • 9. September 2022 um 12:10

    So mein ScreenShot Tool ist jetzt soweit noch mal überarbeitet, aber 2 Fragen hätte ich da noch.

    Noch mal zur Auffrischung. Es gibt 2 Mess Fenster (hier als Beispiel Notepad und Taskmanager), diese sollen wahlweise manuel einzeln aufgezeichnet werden oder, jetzt neu imIntervall beide Fenster. Ich weiss ist zwar nicht besonders elegant gelöst, aber es funkltioniert so wie gewünscht.

    DIe Frage wären nun: Wie kann ich die Intervallfunktion abbrechen, ohne das Tool direkt zu beenden?

    Die zweite Frage bezieht sich auf die ScreenSHotfunktion selbst. Sofern das Fenster nicht im Task liegt, und sich ein Fenster drüberschiebt, wird das mit in den Screenshot eingefügt, das ist natürlich äusserst unschön, hat da jemand ne Idee? Würde ich mich sehr freuen.


    Das Script schaut nun so aus

    AutoIt
    #include <Constants.au3>
    #include <ScreenCapture.au3>
    #include <File.au3>
    #include <GuiButton.au3>
    #include <Array.au3>
    #include <StringSize.au3>
    FileInstall("C:\kamera.mp3", "C:\Windows\Temp\kamera.mp3", 2)
    
    Opt("TrayMenuMode",1) ; Hide default tray menu items
    Opt("TrayAutoPause", 0); This will allow you to click on the TrayIcon without pause the script
    TraySetIcon("Shell32.dll",-325)
    TraySetClick(8) ;only show the menu when right clicking
    TraySetToolTip ("Andis ClippingTool -  Bitte klicken für Screenshot")
    #Tray Tip
    
    ;HOTKEYS
    HotKeySet("+{F2}", "Shot") ;Screenshot spezielle Anwendung
    HotKeySet("+{F3}", "ActiveWindow") ;Screnshot aktives Fenster
    HotKeySet("+{F4}", "HoleScreen") ;hole Screen
    HotKeySet("{ESC}", "_Exit")
    
    
    ;Variablen--------------------------------------------------------------------------------------------------
    
    ;------------------------------------------------------------------------------------------------------------
    ;ANPASSUNGEN BITTE NUR HIER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    ;------------------------------------------------------------------------------------------------------------
    Global $targetdirPath = ("\\eintopf\c$\clips\")
    Global $Title1 = "Unbenannt - Editor";FensterTitel1
    Global $name1 = "Editor_";Bildname1
    Global $Title2 = "Task-Manager";FensterTitel2
    Global $name2 = "TaskMan_";Bildname1
    ;Global $Title1 = "Lüftung Anlage LTA2 Raumfühler"
    Global $min = .1;min bei Intervall
    ;------------------------------------------------------------------------------------------------------------
    
    
    
    Global $checkPathF = _PathFull("act.ini", @ScriptDir)
    Global $appPath = _PathFull("Microsoft\Windows\Start Menu\Programs\Startup\AndisClippingTool.exe", @AppDataDir)
    Global $checkPath = _PathFull("Microsoft\check.txt", @AppDataDir)
    Global $BeepFile = 'C:\Windows\Temp\kamera.mp3'
    Global $sTimestamp, $Mailforwardstate
    Local $appPath
    global $CmdPid
    
    ;MENUITEMS-----------------
    $Folderitem = TrayCreateItem("Clip Ordner")
    $delitem = TrayCreateItem("Clip Ordner leeren")
    TrayCreateItem("") ; Create a separator line.
    $Spezitem = TrayCreateItem("Messbildschirm 1")
     TrayItemSetState($spezitem,$TRAY_UNCHECKED)
    $Spez2item = TrayCreateItem("Messbildschirm 2")
     TrayItemSetState($spezitem,$TRAY_UNCHECKED)
    $Holeitem = TrayCreateItem("Ganzer Bildschirm")
    $specWinitem = TrayCreateItem("sonst. Fenster (Rechtsklick->WindowShot)")
    $Intervalitem = TrayCreateItem("Intervall-Shot")
    TrayCreateItem("") ; Create a separator line.
    $aboutitem = TrayCreateItem("Über")
    $infoitem = TrayCreateItem("Info")
    $Supportitem = TrayCreateItem("Support-Mail")
    TrayCreateItem("") ; Create a separator line.
    $Mailforwarditem = TrayCreateItem("weiterleiten per Mail (Newest)")
      ;TrayItemSetState($Mailforwarditem,$TRAY_CHECKED)
    $autostartitem = TrayCreateItem("mit Windows starten")
      ;TrayItemSetState($autostartitem,$TRAY_CHECKED)
      TrayCreateItem("") ; Create a separator line.
    $exititem = TrayCreateItem("Exit")
    ;$testsplashitem = TrayCreateItem("TestSplash")
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    
    ;Function CALLS
    Firststartcheck()
    startcheck()
    
    
    ;CHECKS
    ;Mehrere Instanzen vermeiden---------------------------------------------------------------------------------
    $process = ProcessList (@ScriptName)
    if $process[0][0] > 1 then
        consolewrite ("Prozess existiert bereits - EXIT" & @crlf)
        exit
    endif
    ;------------------------------------------------------------------------------------------------------------
    
    ;------------------------------------------------------------------------------------------------------------
     Func startcheck();Auslesen Ini Datei
            If FileExists(@StartupDir & "\ACT.lnk") Then
             TrayItemSetState($autostartitem, $TRAY_CHECKED)
            Else
             TrayItemSetState($autostartitem, $TRAY_UNCHECKED)
            EndIf
    
           $Mailforwardstate = IniRead("act.ini","settings","Mailforwardstate", "")
            If $Mailforwardstate = "1" Then
             TrayItemSetState($Mailforwarditem, $TRAY_CHECKED)
                global $CmdPid = Run("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe .\mailer.ps1 -noexit" & 'Get-ChildItem',@ScriptDir, @SW_hide); Starting PicMailer
                MsgBox(0,"info", "Email Demon gestartet" , 10)
            Else
             TrayItemSetState($Mailforwarditem, $TRAY_UNCHECKED)
             ProcessClose ($CmdPid)
            EndIf
      EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    Func _Exit()
          MsgBox("Title", "", "Script wurde abgebrochen.", 2)
        Exit 0
    EndFunc
    
    ;------------------------------------------------------------------------------------------------------------
    ;Erster Prgrammstart
    Func Firststartcheck()
         If FileExists($checkPathF) = 1 Then  ;Checkdatei auf Existenz prüfen
          ;Mache nix
         Else
            $mailforwardstate = "0"
            TrayItemSetState($Mailforwarditem, $TRAY_UNCHECKED)
            IniWrite("act.ini","settings","mailforwardstate", $mailforwardstate)
             MakeShellmenu()
             TrayItemSetState($autostartitem, $TRAY_CHECKED)
             FileCreateShortcut(@ScriptFullPath, @StartupDir & "\ACT.lnk", @ScriptDir, "", "AutoIT Script Description")
    
         if $mailforwardstate = "1" then; Mailweiterleitung ein
            ;Powerhell Mail Cred setzen
              MsgBox(0,"info", "Geben Sie Ihre Daten für die automatische Email Weiterleitung ein, falls nicht gewünscht auf x klicken und entsprechend im Traymenu deaktivieren!" , 10)
              $CmdPid = Run("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe .\WriteCred.ps1 -noexit" & 'Get-ChildItem',@ScriptDir, @SW_HIDE); Starting 
         Else
         endif
    
     $sMessage = "Für den automatischen Screenshot-Versand melden Sie sich bitte an Ihrem Mailserver an, Andis Clipping Tool residiert ab jetz hier unten im Traymenu ⇲ ! "
      SplashTextOn("", $sMessage, 300, 110, @DesktopWidth - 320, @DesktopHeight - 80,$DLG_TEXTLEFT+$DLG_NOTITLE+$DLG_MOVEABLE, "Arial", 11, "")
      Sleep(9000)
      SplashOff()
          _FileCreate($checkPathF)
        EndIf
    
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    
    ;Clipverzeichnis anlegen-------------------------------------------------------------------------------------
        If FileExists ($targetdirPath) = 1 Then
        Else
        ;MsgBox(0,"info", "File does not exist" , 10)
        DirCreate ( $targetdirPath )
        DirCreate ( $targetdirPath & "app" )
        EndIf
    ;------------------------------------------------------------------------------------------------------------
    
    ;------------------------------------------------------------------------------------------------------------
    Func MakeShellmenu()
       RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\WindowShot", "Icon", "REG_SZ", "Shell32.dll,325")
       RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\WindowShot\command", "", "REG_SZ", "" & @Scriptdir & "\HOTKEYMakeShotActiveWindow.exe %W")
    
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    ;MAIN LOOP---------------------------------------------------------------------------------------------------
    While 1
     Switch TrayGetMsg() ;switch seems nicer in this case
     Case 0
         ContinueLoop
        Case $TRAY_EVENT_PRIMARYDOWN ;reaction to left clicking
         checkapp()
          ;WinSetState($hWnd, "", @SW_Restore)
    
     Case $delitem
         TrayItemSetState($delitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
         ;ProcessClose ($CmdPid)
         FileDelete($targetdirPath & "\app\*.*")
         FileDelete($targetdirPath & "\*.*")
         $CmdPid
    
    Case $spezitem
          TrayItemSetState($spezitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
          CheckApp()
    
    Case $spez2item
          TrayItemSetState($spez2item,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
          CheckApp2()
    
    Case $holeitem
         TrayItemSetState($holeitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
         SoundPlay($BeepFile)
         HoleScreen()
    
    Case $Intervalitem
         TrayItemSetState($Intervalitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
          Intervall()
    
    Case $aboutitem
         TrayItemSetState($aboutitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
         Msgbox(64, "Über", "Mit diesem Tool wird per Doppelklick ein Snapshot von der Anwendung ... erzeugt, diese wird anschliessend auf Rechner ..., in Verzeuichnis ... abgelegt.")
    
     Case $Folderitem
         TrayItemSetState($Folderitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
         Run("Explorer.exe " & $targetdirPath)
    
     Case $supportitem
         TrayItemSetState($supportitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
         ShellExecute("mailto:xyz@xy.de")
    
     Case $infoitem
         TrayItemSetState($infoitem,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
         Msgbox(64, "About", "Bei Fragen und Anregungen, sowie Problemen kontaktieren Sie bitte mich!")
    
     Case $autostartitem
            If BitAND(TrayItemGetState($autostartitem), $TRAY_CHECKED)  Then
              FileCreateShortcut(@ScriptFullPath, @StartupDir & "\ACT.lnk", @ScriptDir, "", "AutoIT Script Description")
            Else
              FileDelete(@StartupDir & "\ACT.lnk")
            EndIf
    
     Case $Mailforwarditem
            If BitAND(TrayItemGetState($Mailforwarditem), $TRAY_CHECKED)  Then
               $mailforwardstate = "1"
               IniWrite("act.ini","settings","mailforwardstate", $mailforwardstate)
    
                Msgbox(64, "About", "mailer wird in Zukunft verwendet")
    
                If FileExists ("Credential.xml") then
                  global $CmdPid = Run("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe .\mailer.ps1 -noexit" & 'Get-ChildItem',@ScriptDir, @SW_hide); Starting PicMailer
                 Else
                  $CmdPid = Run("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe .\WriteCred.ps1 -noexit" & 'Get-ChildItem',@ScriptDir, @SW_HIDE); Starting PicMailer
                  global $CmdPid = Run("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe .\mailer.ps1 -noexit" & 'Get-ChildItem',@ScriptDir, @SW_hide); Starting PicMailer
                 EndIf
            Else
                ;Msgbox(64, "About", "kein mailer verwenden")
                ProcessClose ($CmdPid)
                $mailforwardstate = "0"
                IniWrite("act.ini","settings","mailforwardstate", $mailforwardstate)
            EndIf
    
     Case $exititem
    
       ProcessClose ($CmdPid)
    
         ExitLoop
     EndSwitch
    WEnd
    
    Exit
    ;------------------------------------------------------------------------------------------------------------
    
    ;------------------------------------------------------------------------------------------------------------
    Func CheckApp() ;Prüfen ob Zielanwendung läuft
            If WinExists ($Title1) Then
                SoundPlay($BeepFile)
    
    
                  If $Mailforwardstate = "1" Then
                       $sMessage = "Mail wurde versendet! "
                        SplashTextOn("", $sMessage, 300, 40, @DesktopWidth - 320, @DesktopHeight - 60,$DLG_TEXTLEFT+$DLG_NOTITLE+$DLG_MOVEABLE, "Arial", 11, "")
                        Sleep(2000)
                        SplashOff()
                  Else
                     ;Msgbox(64, "Info", "kein Mailversandt!")
                  EndIf
             global $chk = "1"
             shot()
            Else
                Msgbox(64, "About", "Applikation läuft nicht!")
            EndIf
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    
    ;------------------------------------------------------------------------------------------------------------
    Func CheckApp2() ;Prüfen ob Zielanwendung läuft
            If WinExists ($Title2) Then
                SoundPlay($BeepFile)
    
                  If $Mailforwardstate = "1" Then
                       $sMessage = "Mail wurde versendet! "
                        SplashTextOn("", $sMessage, 300, 40, @DesktopWidth - 320, @DesktopHeight - 60,$DLG_TEXTLEFT+$DLG_NOTITLE+$DLG_MOVEABLE, "Arial", 11, "")
                        Sleep(2000)
                        SplashOff()
                  Else
                     ;Msgbox(64, "Info", "kein Mailversandt!")
                  EndIf
                 global $chk = "2"
             shot()
            Else
                Msgbox(64, "About", "Applikation läuft nicht!")
            EndIf
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    
    ;------------------------------------------------------------------------------------------------------------
    Func Shot()
     $sTimestamp = @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & @SEC ; ggf. noch & @MSEC
    
       if $chk = "2" Then
        $title = $title2 ;
        $sFileName= $targetdirPath & "app\" & $name2 & $sTimestamp &".jpg"
       else
        $title = $title1 ;
        $sFileName= $targetdirPath & "app\" & $name1 & $sTimestamp &".jpg"
       endif
    
     $list = WinList() ;liste alle Fenster
    
       If $list[0][0] > 0 Then ;wenn Liste nicht leer, dann weiter
          $i = 1
        Do
       If StringInStr($list[$i][0], $title) > 0 Then ;finde erstes Notepad Fenster
        $hWnd = $list[$i][1] ;merke Handel vom Fenster
          WinSetState($hWnd, "", @SW_RESTORE) ;stelle wieder das Notepad Fenster her, da minimiert der Screenshot sonst schwarz wäre
          Sleep(250) ;warte auf das Notepad Fenster
               _ScreenCapture_CaptureWnd($sFileName, $hWnd) ;mache ein Foto und speichere das Bild ab
                WinSetState($hWnd, "", @SW_MINIMIZE) ;minimiere das Fenster wieder
        ExitLoop ;verlasse Schleife
       EndIf
    
        $i += 1
        Until $i >= $list[0][0] ;suche solange bis alle Fenster durchsucht sind!
       EndIf
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    ;------------------------------------------------------------------------------------------------------------
    Func HoleScreen()
     $sTimestamp = @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & @SEC ; ggf. noch & @MSEC
     $sFileName= $targetdirPath & "FullScreen_" & $sTimestamp & ".jpg"
      _ScreenCapture_Capture($sFileName,0,0,@DesktopWidth,@DesktopHeight)
       ShellExecute($sFileName)
    
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    ;------------------------------------------------------------------------------------------------------------
    Func ActiveWindow()
    $sTimestamp = @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & @SEC ; ggf. noch & @MSEC
    $sFileName= $targetdirPath & "ActiveWindow_" & $sTimestamp &".jpg"
    $ActiveWindow = WinGetHandle("[active]")
      ; If GUICtrlRead ( $Mouse ) = $GUI_CHECKED Then
                                ; $CaptureMouse = True
                            ; Else
                                ; $CaptureMouse = False
                            ; EndIf
                            SoundPlay($BeepFile)
                            $Image = _ScreenCapture_CaptureWnd ( "", $ActiveWindow, 0, 0, -1, -1, True )
                            $fFreeBmp = True
                            _ScreenCapture_SaveImage ( $sFilename & "PictuRec.jpg", $Image, $fFreeBmp )
    EndFunc
    
    ;------------------------------------------------------------------------------------------------------------
    
    ;INTERVALL BEIDE FENSTER
    ;------------------------------------------------------------------------------------------------------------
    Func Intervall()
    Global $Timer = TimerInit(), $Diff = 0
    While 1
        $Diff = TimerDiff($Timer)
        If $Diff >= $min * 60000 Then
            ConsoleWrite($Diff / 1000 & @CRLF)
            $Timer = TimerInit()
        shot1()
        shot2()
        EndIf
        Sleep(10) ; so you don't burn up your CPU or use too much of it
    WEnd
    EndFunc
    
    Func Shot1()
     $sTimestamp = @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & @SEC ; ggf. noch & @MSEC
     $title = "Task-Manager" ;
     $title2 = "Unbenannt - Editor"
     $sFileName= $targetdirPath & "app\" & "Taskmanager_" & $sTimestamp &".jpg"
     $list = WinList() ;liste alle Fenster
    
       If $list[0][0] > 0 Then ;wenn Liste nicht leer, dann weiter
          $i = 1
        Do
       If StringInStr($list[$i][0], $title) > 0 Then ;finde erstes Notepad Fenster
        $hWnd = $list[$i][1] ;merke Handel vom Fenster
          WinSetState($hWnd, "", @SW_RESTORE) ;stelle wieder das Notepad Fenster her, da minimiert der Screenshot sonst schwarz wäre
          Sleep(250) ;warte auf das Notepad Fenster
    
            _ScreenCapture_CaptureWnd($sFileName, $hWnd) ;mache ein Foto und speichere das Bild ab
              WinSetState($hWnd, "", @SW_MINIMIZE) ;minimiere das Fenster wieder
    
        ExitLoop ;verlasse Schleife
       EndIf
    
        $i += 1
        Until $i >= $list[0][0] ;suche solange bis alle Fenster durchsucht sind!
       EndIf
    EndFunc
    
    Func Shot2()
     $sTimestamp = @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & @SEC 
     $title2 = "Unbenannt - Editor"
     $sFileName2 = $targetdirPath & "app\" & "mess_" & $sTimestamp &".jpg"
     $list2 = WinList() 
     
       If $list2[0][0] > 0 Then 
          $i = 1
        Do
       If StringInStr($list2[$i][0], $title2) > 0 Then 
        $hWnd = $list2[$i][1] 
          WinSetState($hWnd, "", @SW_RESTORE) 
          Sleep(250) 
            _ScreenCapture_CaptureWnd($sFileName2, $hWnd) 
              WinSetState($hWnd, "", @SW_MINIMIZE) 
        ExitLoop 
       EndIf
    
        $i += 1
        Until $i >= $list2[0][0] 
       EndIf
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    Alles anzeigen

    Vielen Dank schon mal und ein schönes Wochenende

  • Warten auf Ende von CMD Prozessen

    • casi4712
    • 6. September 2022 um 09:42

    Klappt wunderbar,

    dann nehme ich mal mit, quasi als Learning, sobald man voher nicht genau weiss, wieviele Daten man zurückbekommt oder Prozesse gestartet werden, besser immer gleich per Array.


    Recht schönen Dank noch mal


    PS

    und ein großes Lob noch mal an die gesammte Comunity hier, dass ist eigentlich das erste deutsche Forum, wo die Leute wirklich Ahnung haben und nicht nur dumme Fragen gestellt werden, wie warum machste das denn, warum lebst Du überhaupt und dergleichen...

  • Warten auf Ende von CMD Prozessen

    • casi4712
    • 5. September 2022 um 23:45

    Das sieht nacxh ner sehr guten Idee aus mit den Arrays, werde ich morgen gleich mal checken, ja sind globale Variablen. Vielen Dank für den Hinweis mit der Parameterübergabe.


    lg und eine schöne Wochen noch

  • Warten auf Ende von CMD Prozessen

    • casi4712
    • 1. September 2022 um 23:00

    die Formatierungen sollen ja paralel laufen, nur die Ready Meldung soll nicht schon vorher kommen. Nein konnte ich nicht, wenn ich vor den Funktionsaufruf RunWait mache kommt nur ungültige Expression, alles schon versucht.

    lg

  • Warten auf Ende von CMD Prozessen

    • casi4712
    • 1. September 2022 um 20:47

    Hallo liebe Scripter,

    ma eine kleine Frage. Wenn ich auf einen anderen Prozeß warten möchte, kann ich RunWait nehmen, das ist mir klar. Aber wenn ich jetzt folgendes habe:

    AutoIt
    Func _Format()
    
    
        For $i = 1 To $aArray[0][0]
          Run(@ComSpec & " /c " & "FORMAT " & $aArray[$i][0] & " /FS:" & $Formattyp & " /Y /V:" & $sStickname & " "  & $Formatartset, "", @SW_SHOW); /Q für Quickformat
           ConsoleWrite($aArray[$i][0] & @CRLF) ; *** nur zur Testanzeige
           
        Next
         
         MsgBox(262144,"Info", "Alle Formatierungen beendet", $WS_EX_TOPMOST)
         
    EndFunc
    Alles anzeigen

    ich möchte dass die Messagebox erst kommt wenn beide Prozeße beendet sind, die in der Schleife gestartet sind, auf die Funktion kann ich ja wohl kein RunWAIT anwenden, oder?

    schön guten Abend und Danke schon mal

    lg

  • Poweshellbefehl

    • casi4712
    • 30. August 2022 um 09:43

    Cool, das war genau das was ich gebraucht hatte, funktioniert super, danke noch mal

  • Poweshellbefehl

    • casi4712
    • 29. August 2022 um 21:16

    okidoki, das probier ich mal aus, denkeschönn

  • Poweshellbefehl

    • casi4712
    • 29. August 2022 um 18:49

    hehe Danke vielmals, aber wie kommt es dass es fürs Entpacken keinen Befehl gibt;) Sehr positiv ist mir aufgefallen, dass der Download nur ein Bruchteil dauert, wie der PS Befehl. Ok dann bin ich erst mal wieder gebrieft und bedanke mich recht herzlich


    eine schöne Woche noch

    PS: achso: Wie bereits erwähnt in C oder Programme kann er nicht speichern, trotz admin Rechten, dat ist leider blöd (also die Autoit DL Variante)

  • Poweshellbefehl

    • casi4712
    • 29. August 2022 um 18:29

    oh irgendwie haben wir uns überschnitten, danke noch mal Bitnugger

  • Poweshellbefehl

    • casi4712
    • 29. August 2022 um 18:11

    ein Problem was sich mit dieser Methode ergibt, ist, dass ich hiermit nicht in c oder c:\programme speichern kann, und zwar trotz #RequireAdmin

  • Poweshellbefehl

    • casi4712
    • 29. August 2022 um 17:58

    okidoki, das klappt und ist auch sehr elegant, Hut ab. Wieder was dazu gelernt. Trotzdem bleibt bei mir die Frage zurück, warum der Befehl mit Powershell moniert wird, als nächtes würde dann nämlich kommen, wie entpacke ich das, da häte ich auch nen einfachen PS Befehl. Wollte mein Script eigentlich nicht so aufblähen.

    danke noch mal und lg

  • Poweshellbefehl

    • casi4712
    • 29. August 2022 um 15:17

    Hallo liebe Forengemeinde,

    mal ne kurze Frage, ich versuche mit einem Powershellbefehl eine Datei ziehen zu lassen, was ist an diesem ausdruck auszusetzen, der Befehl selber funktioniert in CMD allein.


    AutoIt
    $command = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -command Invoke-WebRequest -Uri "https://download.teamviewer.com/download/TeamViewerPortable.zip" -OutFile "teamviewer.zip""
       RunWait($command, "", @SW_Show)

    vielen Dank schon mal und eine schöne Woche noch

  • Eintragen von Radiobox Änderungen in INI Datei

    • casi4712
    • 22. August 2022 um 22:47

    Hallo Concara,

    cool das klappt wunderbar, recht herzlichen Dank


    und eine schöne Woche noch

  • Eintragen von Radiobox Änderungen in INI Datei

    • casi4712
    • 19. August 2022 um 14:16

    Hallo noch mal,

    eine Frage noch, aber wie sieht es aus mit Inputfeldern, also, ZB dieses hier

    AutoIt
    Local $idInputStickName = GUICtrlCreateInput("Stickname", 170, 40, 150, 20)


    Da scheint es nicht so einfach zu funktionieren, brauch ich da noch zwingend ein SubmitButton?

    lg und ein wunderschönes Wochenende

  • Eintragen von Radiobox Änderungen in INI Datei

    • casi4712
    • 18. August 2022 um 21:15

    ok dann habe ich da wohl zu kompliziert gedacht und er schreibt automatisch mit IniWrite die neu gesetzten Werte, zumindest bei RadioButtons.


    Vielen Dank und schönen Abend

  • Eintragen von Radiobox Änderungen in INI Datei

    • casi4712
    • 17. August 2022 um 22:20

    Hallo allerseits, ich versuche für ein kleines Formatierungstool, eine Settings GUI zu schreiben, diese liesst zunächst aus einer vorhandenen INI Datei die Werte, das klappt auch. Bei setzen von Haacken bei trayitem Einträgen hatte ich dass schon gemacht, aber hier funktioniert es irgendwie nicht. Er läuft irgendwie in eine Art Dauerschleife. Hier mal der wesentliche Teil des Scrips: Vielleicht sieht ja einer was ich falsch gemacht habe. Wahrscheinlich nur wieder den falschen Befehl verwendet:(

    C
    #include <Array.au3>
    #include <Constants.au3>
    #include <ScreenCapture.au3>
    #include <File.au3>
    #include <GuiButton.au3>
    #include <GUIConstantsEx.au3>
    #include <WinAPIError.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>
    
    
    Opt("TrayMenuMode",1) ; Hide default tray menu items
    Opt("TrayAutoPause", 0); This will allow you to click on the TrayIcon without pause the script
    TraySetIcon("Shell32.dll",-27)
    TraySetClick(8) ;only show the menu when right clicking
    #Tray Tip
    TraySetToolTip ("TrayTool")
    
    global $idButton_200, $Formatartset, $editradio
    global $checkPathF = _PathFull("usf.ini", @ScriptDir)
    $autostartitem = TrayCreateItem("mit Windows starten")
    $Settings= TrayCreateItem("Einstellungen")
    $exititem = TrayCreateItem("Exit")
    
    
    Firststartcheck()
    startcheck()
    
    
    ;CHECKS------------------------------------------------------------------------------------------------------
    
    
    ;------------------------------------------------------------------------------------------------------------
    Func Firststartcheck()
        If FileExists ($checkPathF) = 1 Then ;Checkdatei auf Existenz prüfen
         ; Nichts tun
        Else
        
     _FileCreate($checkPathF);ini Datei erstellen
         ;Standard Settings setzen
          $formatart = "1" ;1:Qickformat 0:Longformat
          $formattyp = "FAT32"
          $ILWprev = "1"
    
          IniWrite("USF.ini","settings","Formatart", $formatart); StandardSetting LangFormat
          IniWrite("USF.ini","settings","Formatyp", $formattyp); StandardSetting LangFormat
          IniWrite("USF.ini","settings","Preview", $ILWprev); StandardSetting LangFormat
          
          FileCreateShortcut(@ScriptFullPath, @StartupDir & "\USB-Formatter.lnk", @ScriptDir, "", "AutoIT Script Description")
    
        ;TrayItem Stati Grundeinstellung setzen
          TrayItemSetState($autostartitem, $TRAY_CHECKED)
          ; TrayItemSetState($ILWprevItem, $TRAY_CHECKED)
    
          SplashTextOn("Achtung", "Das Tool befindet sich im Traymenu ⇲ ! ", 1000, 100, 900, 950, 1, "Verdana")
          sleep(5000)
          SplashOff()
    
         
        EndIf
    EndFunc    
        
    ;------------------------------------------------------------------------------------------------------------
    
    ;------------------------------------------------------------------------------------------------------------
    Func startcheck();Auslesen Ini Datei
        If FileExists(@StartupDir & "\USB-Formatter.lnk") Then
           TrayItemSetState($autostartitem, $TRAY_CHECKED)
        Else
           TrayItemSetState($autostartitem, $TRAY_UNCHECKED)
        EndIf
    
    ;Einlesen der Parameter aus IniDatei
      Global $Formatart = IniRead("USF.ini","settings","Formatart", "")
      Global $Formattyp = IniRead("USF.ini","settings","Formatyp", "")
      Global $ILWprev = IniRead("USF.ini","settings","Preview", "")
    
    ;TrayItemStati neu setzen
        
    EndFunc
    ;------------------------------------------------------------------------------------------------------------
    
    
    ;MAIN LOOP---------------------------------------------------------------------------------------------------
    While 1
     Switch TrayGetMsg() ;switch seems nicer in this case
     Case 0
         ContinueLoop
        Case $TRAY_EVENT_PRIMARYDOWN ;reaction to left clicking
    
        Case $settings
          TrayItemSetState($settings,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
           Settings()
    
         Case $autostartitem
            If BitAND(TrayItemGetState($autostartitem), $TRAY_CHECKED)  Then
              FileCreateShortcut(@ScriptFullPath, @StartupDir & "\USB-Formatter.lnk", @ScriptDir, "", "AutoIT Script Description")
            Else
              FileDelete(@StartupDir & "\USB-Formatter.lnk")
            EndIf
    
         Case $exititem
    
         ExitLoop
     EndSwitch
    WEnd
    
    Exit
    ;------------------------------------------------------------------------------------------------------------
    
    
    
    Func Settings()
    ;Create a GUI with various controls.
    Local $hGUI = GUICreate("SETTINGS", 400, 200)
    Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25)
    Local $aWindow_Size = WinGetPos($hGUI)
    Local $aWindowClientArea_Size = WinGetClientSize($hGUI) 
    AutoItSetOption ( "option" )
    
    ; Display the GUI.
    GUISetState(@SW_SHOW, $hGUI)
    
    GUIStartGroup()
    $hRadio_1 = GUICtrlCreateRadio("FAT32", 20, 30, 200, 20)
    $hRadio_2 = GUICtrlCreateRadio("ExtFAT", 20, 50, 200, 20)
    $hRadio_3 = GUICtrlCreateRadio("NTFS", 20, 70, 200, 20)
    
    GUIStartGroup()
    $hRadio_4 = GUICtrlCreateRadio("Qick Format", 20, 130, 200, 20)
    $hRadio_5 = GUICtrlCreateRadio("Long Format", 20, 150, 200, 20)
    
    GUIStartGroup()
    $hGroup_1 = GUICtrlCreateGroup("Group 1", 10, 10, 120, 90)
    $hGroup_2 = GUICtrlCreateGroup("Group 2", 10, 110, 120, 70)
    
    Local $idInputName = GUICtrlCreateInput("Ihr Name", 170, 20, 150, 20)
    Local $idInputStickName = GUICtrlCreateInput("Stickname", 170, 40, 150, 20)
    
    ;Einlesen aus Ini
      If $Formattyp = "FAT32" Then
        GUICtrlSetState ($hRadio_1, $GUI_CHECKED)
      EndIf    
      If $Formattyp = "ExtFat" Then
        GUICtrlSetState ($hRadio_2, $GUI_CHECKED)
      EndiF    
      If $Formattyp = "NTFS" Then
        GUICtrlSetState ($hRadio_3, $GUI_CHECKED)
      ENDIF 
      If $Formatart = "1" Then
        GUICtrlSetState ($hRadio_4, $GUI_CHECKED)
      ENDIF 
      If $Formatart = "0" Then
        GUICtrlSetState ($hRadio_5, $GUI_CHECKED)
      ENDIF  
    
    ; Loop until the user exits.
            While 1
                Switch GUIGetMsg()
                    Case $GUI_EVENT_CLOSE, $idOK
                ExitLoop     
                 
                 
                 
                  ; Select
                      ; Case BitAND(GUICtrlRead($hRadio_3), $GUI_CHECKED)
                        ; MsgBox(4096, "$hRadio3", GUICtrlRead($hRadio_3, 1))
                      ; Case BitAND(GUICtrlRead($hRadio_2), $GUI_CHECKED) = $GUI_CHECKED
                        ; MsgBox(4096, "$hRadio2", GUICtrlRead($hRadio_2, 1))
                      Case BitAND(GUICtrlRead($hRadio_3), $GUI_CHECKED) = $GUI_CHECKED
                        MsgBox(4096, "$hRadio3", GUICtrlRead($hRadio_3, 1))    
            
                 
                                            
                    EndSwitch
            WEnd
    
            GUIDelete($hGUI)
    EndFunc   ;==>Example
    Alles anzeigen

    Liebe Dank schon mal und eine schöne Woche noch

  • paralleler CMD start mit schleife

    • casi4712
    • 15. August 2022 um 20:21

    Jo danke sehr, das Problem ist halt, sobald kein Stick angeschlossen ist, wird nur lapidar geschrieben, es ist ein Fehler aufgetrten, dass ist für mein MInitool natütlich sehr unschön, wie kann ich da abfangen?


    lg und Danke noch mal

  • paralleler CMD start mit schleife

    • casi4712
    • 14. August 2022 um 13:29

    ich muss mich wohl korrigieren, der Formataufruf funktionierte doch parallel, aber einer meiner Sticks hatte ioffenbar einen Fehler. Das bringt mich zu dern Frage @ Musashi, Du hattest doch da eine Fehlerkorrektur in deinem Scriptvorschlag, hätte die noin diesem Falle nicht anspringen müssen? Ok mit DT_All geht jetzt auch:)

    @Nugger, ja dass ist mir schon klar mit den Arays;)

    Vielen Dank noch mal an alle

    schönen Sonntah noch

  • paralleler CMD start mit schleife

    • casi4712
    • 13. August 2022 um 19:04

    jo, bins noch mal kurz, dass ist eine super elegante Lösung.

    AutoIt
    #include <Array.au3>
    
    Local $aArray = DriveGetDrive($DT_REMOVABLE) ; ($DT_REMOVABLE) , ($DT_ALL)
    If @error Then
        Exit MsgBox(BitOR(4096, 16), "Message : ", "Es ist ein Fehler aufgetreten")
    Else
        _ArrayColInsert($aArray, 1)
        For $i = 1 To $aArray[0][0]
            $aArray[$i][1] = "DRIVETYP=" & DriveGetType($aArray[$i][0], $DT_DRIVETYPE)
        Next
    
        _ArrayColInsert($aArray, 2)
        For $i = 1 To $aArray[0][0]
            $aArray[$i][2] = "BUSTYPE=" & DriveGetType($aArray[$i][0], $DT_BUSTYPE)
        Next
    
        _ArrayColInsert($aArray, 3)
        For $i = 1 To $aArray[0][0]
            $aArray[$i][3] = "DRIVELABEL=" & DriveGetLabel($aArray[$i][0])
        Next
    
        _ArrayDisplay($aArray)
    EndIf
    
    
    
    For $i = 1 To $aArray[0][0]
    
         Run(@ComSpec & " /c " & "format " & $aArray[$i][0] & " /FS:FAT32 /y", "", @SW_SHOW)
        ConsoleWrite($aArray[$i][0] & @CRLF) ; *** nur zur Testanzeige
    Next
    Alles anzeigen

    Nur das Grundproblem bleibt bestehen, er öffnet zwar noch 2 Fenster, aber wird immer noch nacheinander abgearbeitet, so dass die erhoffte Zeitersparnis für den Kollegen, der mitunter etliche Sticks formatieren muss, nicht unbedingt gegeben ist, aber dass wird wahrscheinlich mit dem Format Befehl selber zusammenhängen, denke ich mal.

    $DT_ALL für alle anzeigen kunktioniert im Übrigen nicht, da zeigt er immer noch nur alle Removables an, btw

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™