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

  • Splash Screen in Schleife

    • casi4712
    • 14. März 2023 um 17:24

    Nein eben nicht,,

    jetzt kommen zwar splashes auch ohne mit der maus im Tray zu sein, aber diese haben mit den Schwellwerten nichsts mehr zu tun und kommen ständig unkrontrolliert, zumindest bei meinem Rechner, vielleicht ist das ja bei die anders


    lg und schöne Woche noch

  • Splash Screen in Schleife

    • casi4712
    • 4. März 2023 um 21:12

    Hallo und danke noch mal für die vielen Hinweise. Andi, Du meinst jetzt nicht an dieser Stelle:

    AutoIt
    TraySetToolTip($sPreviousFreeRam & " GB" & " Free RAM" & @CRLF & "Aufgeladen: " & $sPreviousBatState & "%" & @CRLF & "Prozessor Auslastung :" & $sPreviousProcLoad & " %" & @CRLF & $sPreviousconState & @CRLF & "SytemDrive free on '" & $strDrive & "' : " & $PreviousfltDriveFreeSpace & " GB")
    
        While True
         _Checks()
            $a = WinList("[CLASS:tooltips_class32]")
  • Splash Screen in Schleife

    • casi4712
    • 3. März 2023 um 14:47

    okidoki, meine zwar das hatte ich schon an der Stelle, aber ich versuchs noch mal


    danke

    lg

  • Splash Screen in Schleife

    • casi4712
    • 27. Februar 2023 um 09:00

    Guten Morgen, na klar will ich die Warnhinweise auch sehen, wenn ich nicht mit der Maus im Tray bin, sonst macht es ja keinen Sinn. Aber ich habe gerade festgestellt, dass das Script in der Tat auf einigen PCs funktioniert und auf anderen nicht, das ist natürlich jetzt irgendwie blöd.

  • Splash Screen in Schleife

    • casi4712
    • 26. Februar 2023 um 13:02

    Hallo, danke erst einmal,

    das ist ja sehr merkwürdig. Ich meine nicht, dass die Warnhinweise, die Schwellwerte sind natürlich nur testweise höher gesetzt, auf Mausover über das TrayIcon kommen, das geht bei mir auch. Aber wenn ich nicht im Tray bin kommen die Spashes nicht. Ich habe auch win 10 pro, aktuell alle Patches drauf. Werde das mal an einem anderen PC testen


    lg und schönen Sonntag noch

  • Splash Screen in Schleife

    • casi4712
    • 25. Februar 2023 um 17:41

    Hallo liebe Autoit Gemeinde, ich benötige mal wieder einen freundlichen Denkanstoß. Ich habe ein kleines TrayScript gebastelt, welches mir verschiedene Systemwerte anzeigt, bspw. verbleibender RAM, Prozessor Auslastung... weitere werden folgen. Ich habe es hinbekommen, dass die Anzeige im Tray aktualisiert wird, ohne dass ich imer wieder neu rauf gehen muss, leider funktionieren die eingebauten SplashScreens, die aufpoppen sollen, wenn ein bestimmter Wert untetschritten wird nun nicht mehr, hat jemand ne Idee ? Das Script sieht so aus:

    AutoIt
    #include <GuiToolTip.au3>
    #include <TrayConstants.au3>
    #include <GuiToolTip.au3>
    #include <MemoryConstants.au3>
    #include <WinAPISys.au3>
    #include <GuiToolTip.au3>
    TraySetIcon("authui.dll", -0)
    
    GLOBAL $LowRam= 5 ; GB
    Global $ChargeLow = 60
    Global $ProcLoadHi = 90
    
    GLOBAL $NewFreeRam, $NewBatState, $conDat, $NewProcLoad, $NewfltDriveFreeSpace, $aData
    Global $strDrive = "C:\", _
    $PreviousfltDriveFreeSpace = GetDriveFreeSpace($strDrive), _
    $fltDriveLowSpace = 20 ; GB
    $sPreviousFreeRam = GetFreeRam()
    $sPreviousBatState = _BatteryStatus()
    $sPreviousconState = _AcCON()
    $sPreviousProcLoad = GetCPUavg()
    
    
    ManageTrayIcon()
    
    
    Func ManageTrayIcon()
    TraySetToolTip($sPreviousFreeRam & " GB" & " Free RAM" & @CRLF & "Aufgeladen: " & $sPreviousBatState & "%" & @CRLF & "Prozessor Auslastung :" & $sPreviousProcLoad & " %" & @CRLF & $sPreviousconState & @CRLF & "SytemDrive free on '" & $strDrive & "' : " & $PreviousfltDriveFreeSpace & " GB")
    
    While True
        $a = WinList("[CLASS:tooltips_class32]")
        For $i = 1 To UBound($a)-1
    
            If WinGetTitle($a[$i][1]) = $sPreviousFreeRam Then
                $NewfltDriveFreeSpace = GetDriveFreeSpace($strDrive)
                $NewFreeRam = GetFreeRam()
                $NewBatState = _BatteryStatus()
                $NewConState = _AcCON()
                $NewProcLoad = GetCPUavg()
                $NewTitle = "Health Status"
    
                If $NewFreeRam <> $sPreviousFreeRam Then
                    ConsoleWrite(WinGetTitle($a[$i][1]) & @CRLF)
    
             TraySetToolTip($NewFreeRam & " GB" & " Free RAM" & @CRLF & "Aufgeladen: " & $NewBatState & "%" & @CRLF & "Prozessor Auslastung :" & $NewProcLoad & " %" & @CRLF & $NewConState& @CRLF & "SytemDrive free on '" & $strDrive & "' : " & $NewfltDriveFreeSpace & " GB")
                     _Checks()
    
                   WinSetTitle($a[$i][1],"",$NewFreeRam)
                    ControlSetText($a[$i][1],"","",$NewFreeRam)
                    _GUIToolTip_Update($a[$i][1])
                    $sPreviousFreeRam = $NewFreeRam
                EndIf
    
            EndIf
        Next
       ; Sleep(10)
    WEnd
    
    EndFunc
    
    
    
    Func _checks()
        ;RAM LEVEL
            IF ($NewFreeRam <= $LowRam) Then
                  Warn()
            ELSE
            EndIf
    
        ;SPACE Level
            IF $NewfltDriveFreeSpace > $ProcLoadHi Then
                Warn2()
            ELSE
            EndIf
    
         ;Charge Level
            IF $NewBatState <= $ChargeLow AND ( $ConDat = 0) Then
                Warn3()
            ELSE
            EndIf
    
        ;Last Level
            IF $NewProcLoad > $ProcLoadHi Then
                Warn4()
            ELSE
            EndIf
    
    EndFunc
    
    
    Func _BatteryStatus()
            $aData = _WinAPI_GetSystemPowerStatus(); Array mit Batterie Werten einlesen
            $ChargeDat = $aData[2]
            REturn $ChargeDat
    EndFunc   ;==>_BatteryStatus
    
    
    Func _AcCON()
             $bData = _WinAPI_GetSystemPowerStatus(); Array mit Batterie Werten einlesen
             $ConDat = $aData[0]
                  IF $ConDat = 0 Then
                     $ConDatR = "Kein Netzteil"
                  Else
                     $ConDatR = "Netzteil angeschlossen"
                  ENDIF
            REturn $ConDatR
    EndFunc   ;==>_BatteryStatus
    
    
    FUNC GetFreeRam() ; verfügbarern RAM ermitteln
      $aMemStats = MemGetStats()
        Return Round($aMemStats[$MEM_AVAILPHYSRAM]/1024/1024, 2)
    ENDFUNC
    
    Func GetDriveFreeSpace($strDrive)
        Return Round((DriveSpaceFree($strDrive)/1024), 1)
    EndFunc
    
    
    Func GetCPUavg()
        LOCAL $objWMIService, $objProcessList, $objProcess, $iLoad
        $iLoad = 0
        $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
        $objProcessList = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor")
        For $objProcess In $objProcessList
            $iLoad = $iLoad + $objProcess.LoadPercentage
        Next
        Return $iLoad
    EndFunc
    
    
    
    
    
    FUNC Warn()
         SplashTextOn("Splash", "RAM wird knapp", 450, 45, 1400, 1000, 1, "Verdana")
         sleep(8000)
         SplashOff()
    ENDFUNC
    
    FUNC Warn2()
         SplashTextOn("Splash", "Speicherplatz auf dem SystemDrive wird knapp", 450, 45, 1400, 1000, 1, "Verdana")
         sleep(7000)
         ;SplashOff()
    ENDFUNC
    
    FUNC Warn3()
         SplashTextOn("Splash", "Batterie wird knapp, bitte laden!!!", 450, 45, 1400, 1000, 1, "Verdana")
         sleep(7000)
         SplashOff()
    ENDFUNC
    
    FUNC Warn4()
         SplashTextOn("Splash", "Sehr hohe Prozessor Auslastung!!!", 450, 45, 1400, 1000, 1, "Verdana")
         sleep(7000)
         SplashOff()
    ENDFUNC
    Alles anzeigen

    Ich hoffe es sing keine Globals mehr innerhalb der Funktionen,

    ein schönes Wochenende noch

    lg

  • Poweshellscript fenster unsichtbar einbinden

    • casi4712
    • 13. Februar 2023 um 13:17

    okidoki, weiss ich Bescheid, gut bei dieser einfachen Ausgabe macht das 0x2 dann wohl keinen Sinn, in diesem Sinne noch mal Danke und

    eine schöne Woche

  • Poweshellscript fenster unsichtbar einbinden

    • casi4712
    • 13. Februar 2023 um 00:00

    hallo Moomnas,

    hatte erst kürzlich gesehen dass Du noch geschrieben hattest, aber dass hatte so noch nicht funktioniert, hätte bei Dir eigentlich auch so nicht gehen dürfen. Das Problem war folgendes, erstens störete das 0x2, was auch immer das machen soll in der folgenden Zeile.

    Code
        Local $sOut = '', $iPID = Run($sRun, @ScriptDir, @SW_HIDE, 0x2)

    Und weiterhin kann es aus powershell technischen Gründen ja nicht funktionieren, am ende einer abgeschlossenen PS Zeile erwartet PS ja ein ; zur Trennung, und das von Bug vorgeschlagene Script schreibt ja alles in ein File in eine Zeile, dann geht es. Also bspw. so:

    AutoIt
    Global $EnvPath = '"c:\code"'
    Global $sCmdPS = _
        '[System.Environment]::GetEnvironmentVariable("PATH","machine") > C:\backup-path.txt;' & _
        '$INCLUDE = ' & $EnvPath & ';' & _
        '$OLDPATH = [System.Environment]::GetEnvironmentVariable("PATH","machine");' & _
        '$NEWPATH = "$OLDPATH;$INCLUDE";' & _
        '[Environment]::SetEnvironmentVariable("PATH", "$NEWPATH", "Machine")'
    _PowerShell_Run($sCmdPS)

    Vielen Dank hier noch an allen Helfern und eine

    schöne Woche

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 6. Februar 2023 um 13:59

    Hammer, Du hast es hinbekommen, hast es jetzt so umgestellt, dass nicht bei Falsch PW EIngabe nur ein Requester kommt, aber denke ist für die Nutzer am Ende weniger stress. Ich hatte dass mit der Function in der MAinGUI erst auch als Idee, aber ich hatte irgendwie im Hinterkopf keine Funktionen innerhalb der mainGUI, habe ich wohl verwechselt. Ich werde mir dass noch mal genau anschauen, damit ich nächst mal damit keine Probleme habe, denke fürs erste sollte das DIng passen


    Recht herzlichen Dank noch mal


    und eine schöne Woche noch

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 6. Februar 2023 um 11:42

    also ich weiss nicht was du speziell meinst, ich ignoriere keinen einzigen Tip, im Gegenteil. Siehst du noch lokale globale Variablen? Vielleicht reden wir nur manchmal aneinander vorbei;)

    lg und schönen Morgen noch

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 6. Februar 2023 um 09:29

    Jo hallo und guten Morgen, ich sehe zwar aschon, dass man mich für ein bischen bescheuert hält, anhand der unterschwelligen Äüsserungen, aber muss ich wohl mit leben. Ich hatte den Vorschlag aufgegriffen und habe den check auf den Typ jetzt entsorechend weiter vorgelagert, vor die Stelle, wo der Handling check kommt, habe es 1:1 so gemacht, leider zeigt er mir jetzt immer an das der Dateityp der gedroppten Datei falsch wäre, vielleicht sieht ja von Euch jemand den Fehler. Das Script sieht jetzt so aus:

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    
    #include <GuiConstants.au3>
    #include <FileConstants.au3>
    #include <ProcessConstants.au3>
    #include <WinAPIHObj.au3>
    #include <WinAPIProc.au3>
    #include <WinAPISys.au3>
    #include <WinAPIProc.au3>
    #include <WinAPISys.au3>
    #include <File.au3>
    
    global $iError, $sFile, $szDrive, $SzDir, $szFname, $szExt, $SPath, $tMaxTries, $tTry
    Global $iWidth=530, $iHeight=120, $iBorder=10
    
    
    ;GUI
    Global $hMainGui = GUICreate('Zert Dropper', $iWidth, $iHeight, @DesktopWidth/2-$iWidth/2, @DesktopHeight/2-$iHeight/2, _
                                 Default, BitOR($WS_EX_ACCEPTFILES,$WS_EX_TOPMOST))
    Global $iInfoLabel = GUICtrlCreateLabel('Bitte ziehen Sie mit der Maus die erhaltene PFX-Datei in dieses Fenster ' & _
                                            'und lassen es hier fallen, danach geben Sie Ihr Passwort ein, welches ' & _
                                            'Sie per Mail erhalten haben, den Rest erledige ich für Sie.', _
                                            $iBorder, $iBorder, $iWidth-2*$iBorder, $iHeight-2*$iBorder)
    GUICtrlSetFont($iInfoLabel, 16, 0, "Arial")
    GUICtrlSetBkColor($iInfoLabel, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetState($iInfoLabel, $GUI_DROPACCEPTED)
    GUISetState(@SW_SHOW, $hMainGui)
    
    _mainLoop()
    
    Func _mainLoop()
        While Sleep(10)
            Local $iMsg = GUIGetMsg()
            Switch $iMsg
                case $GUI_EVENT_CLOSE
                    GUIDelete($hMainGui)
                    Exit
                    
                case $GUI_EVENT_DROPPED
                    If @GUI_DropId = $iInfoLabel Then
                               
                        Local $sFile = @GUI_DragFile
                               $sPath = _PathSplit($sFile, $szDrive, $szDir, $szFName, $szExt)
                               Local $tTry = 0, $tMaxTries = 3
                                While $tTry<$tMaxTries
                                if Not _checkTyp($spath) Then
                          
                               Switch @error    
                                    case 4
                                        MsgBox(16, "Fehler", "Falsche Datei." & _
                                                    @CRLF & "Fehler Info: " & @extended, @extended, $hMainGui)
                                        return            
                             EndSwitch
                            Else
    
                                ExitLoop
                            EndIf
                            $tTry+=1
                        WEnd
                    
                        
                        Local $iTry = 0, $iMaxTries = 3
                        While $iTry<$iMaxTries
                            If Not _handleFile($sFile) Then
                                Switch @error
                                
                                    case 4
                                        MsgBox(16, "Fehler", "Falsche Datei." & _
                                                             @CRLF & "Fehler Info: " & @extended, @extended, $hMainGui)
                                
                                    case 1
                                        MsgBox(16, "Fehler", "Sie haben keine Datei gedropped, oder die Datei existiert nicht." & _
                                                             @CRLF & "Fehler Info: " & @extended, Default, $hMainGui)
                                    case 2
                                        MsgBox(16, "Fehler", "Das Passwort konnte nicht erfolgreich abgefragt werden." & _
                                                             @CRLF & "Fehler Info: " & @extended, Default, $hMainGui)
                                    case 3
                                       
                                                              MsgBox(16, "Fehler", "Das Passwort war falsch, bitte noch mal versuchen ", Default, $hMainGui)
                                EndSwitch
                            Else
                            GUIDelete()
                                    SplashTextOn('Herzlichen Glückwunsch', '"VPN Zertifikat wurde installiert, war doch einfach oder?"', 300, 60, -1, -1, $DLG_NOTITLE)
                                     Sleep(7000)
                                     SplashOff()
                            
                                ExitLoop
                            EndIf
                            $iTry+=1
                        WEnd
                        
                        If $iTry=$iMaxTries Then MsgBox(16, "Fehler", "Leider hat das nicht geklappt. Der Vorgang wurde abgebrochen. Bitte ziehen Sie erneut die PFX Datei in das Fenster!", Default, $hMainGui)
                    EndIf            
            EndSwitch
        WEnd
    EndFunc
    
    
    Func _checkTyp($sPath)
    If Not $sPath = ".pfx" Then return SetError(4, @extended, False) ;Falscher DateiTyp
    MsgBox(16, "Fehler", @Error )
    return True
    EndFunc
    
    
    Func _handleFile($sFile)
        If Not FileExists($sFile) Then return SetError(1, 0, False) ;keine Datei gedroppt
        Local $sPassword = _getPassword()
        If @error Then return SetError(2, @extended, False)
        _makeCert($sFile, $sPassword)
        If @error Then return SetError(3, @error, False)
        return True
    EndFunc
    
    
    
    Func _getPassword()
    ;$inp = InputBox("Bitte geben Sie Ihr Passwort ein:", "", "", "*")
           Local $sPassword = InputBox("Sicherheit", "Geben Sie das Passwort für das Zertifikat ein.", "", " M20", Default, Default, Default, Default, Default, $hMainGui)
    
        If @error Then return SetError(1, @error, "")
        return $sPassword
    EndFunc
    
    
    
    Func _makeCert($sFile, $sPassword)
        Local $sCmd = 'certutil -f -p ' & $sPassword & ' -user -importpfx "' & $sFile & '"'
        Local $iPID = Run(@ComSpec & " /c " & $sCmd, "", @SW_HIDE) ; use /k instead of /c to see commandline result
        If @error Then SetError(1, @error, False)
        Local $hProcess = _WinAPI_OpenProcess($PROCESS_QUERY_LIMITED_INFORMATION, 0, $iPID)
        If @error Then SetError(2, @error, False)
        While ProcessExists($iPID) and Sleep(10)
        WEnd
        Local $iError = _WinAPI_GetExitCodeProcess($hProcess)
        _WinAPI_CloseHandle($hProcess)
        If $iError<>0 Then SetError(3, $iError, False)
        return True
    
    EndFunc
    Alles anzeigen

    Liebe Grüße und schönen Morgen noch, und Danke allen Helfen, tut mir ja auch leid dass ich bei AutoIt noch nicht so lange dabei bin wie Ihr;)

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 5. Februar 2023 um 16:39

    So ich habe jetzt noch mal versucht um eine Sache zu ergänzen, und zwar möchte ich gerne abchecken, ob es sich überhaupt um eine pfx Datei handelt, dies wollte ich über die Split Funktion prüfen und habe diesen Fall dann in die _handleFile versucht einzuarbeiten als case4, aber leider wird es komplett ignoriert, wäre hier evtl.eine andere Stelle sinnvoller: Mein modifiziertes Script sieht nun so aus?

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    
    #include <GuiConstants.au3>
    #include <FileConstants.au3>
    #include <ProcessConstants.au3>
    #include <WinAPIHObj.au3>
    #include <WinAPIProc.au3>
    #include <WinAPISys.au3>
    #include <File.au3>
    #include <ProcessConstants.au3>
    #include <WinAPIHObj.au3>
    #include <WinAPIProc.au3>
    #include <WinAPISys.au3>
    
    global $iError, $sFile, $szDrive, $SzDir, $szFname, $szExt, $SPath
    Global $iWidth=530, $iHeight=120, $iBorder=10
    
    Global $hMainGui = GUICreate('LARCH-Zert Dropper', $iWidth, $iHeight, @DesktopWidth/2-$iWidth/2, @DesktopHeight/2-$iHeight/2, _
                                 Default, BitOR($WS_EX_ACCEPTFILES,$WS_EX_TOPMOST))
    Global $iInfoLabel = GUICtrlCreateLabel('Bitte ziehen Sie mit der Maus die erhaltene PFX-Datei in dieses Fenster ' & _
                                            'und lassen es hier fallen, danach geben Sie Ihr Passwort ein, welches ' & _
                                            'Sie per Mail erhalten haben, den Rest erledige ich für Sie.', _
                                            $iBorder, $iBorder, $iWidth-2*$iBorder, $iHeight-2*$iBorder)
    GUICtrlSetFont($iInfoLabel, 16, 0, "Arial")
    GUICtrlSetBkColor($iInfoLabel, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetState($iInfoLabel, $GUI_DROPACCEPTED)
    GUISetState(@SW_SHOW, $hMainGui)
    
    _mainLoop()
    
    Func _mainLoop()
        While Sleep(10)
            Local $iMsg = GUIGetMsg()
            Switch $iMsg
                case $GUI_EVENT_CLOSE
                    GUIDelete($hMainGui)
                    Exit
                    
                case $GUI_EVENT_DROPPED
                    If @GUI_DropId = $iInfoLabel Then
                        Local $sFile = @GUI_DragFile
                        Local $iTry = 0, $iMaxTries = 7
                        While $iTry<$iMaxTries
                            If Not _handleFile($sFile) Then
                                Switch @error
                                    case 1
                                        MsgBox(16, "Fehler", "Sie haben keine Datei gedropped, oder die Datei existiert nicht." & _
                                                             @CRLF & "Fehler Info: " & @extended, Default, $hMainGui)
                                    case 2
                                        MsgBox(16, "Fehler", "Das Passwort konnte nicht erfolgreich abgefragt werden." & _
                                                             @CRLF & "Fehler Info: " & @extended, Default, $hMainGui)
                                    case 3
                                         MsgBox(16, "Fehler", "Das Certifikat konnte nicht erfolgreich erstellt werden." & _
                                                             ; @CRLF & "Fehler Info:Passwort war falsch " & @extended, Default, $hMainGui)
                                                              MsgBox(16, "Fehler", "Das Passwort war falsch, bitte noch mal versuchen ", Default, $hMainGui)              
                                    ; case 4
                                                           ; MsgBox(16, "Fehler", "Falscher Dateityp, bitte noch mal.")                          
                                                              
                                EndSwitch
                            Else
                            GUIDelete()
                                    SplashTextOn('Herzlichen Glückwunsch', '"VPN Zertifikat wurde installiert, war doch einfach oder?"', 300, 60, -1, -1, $DLG_NOTITLE)
                                    Sleep(7000)
                                     SplashOff()
                            
                                ExitLoop
                            EndIf
                            $iTry+=1
                        WEnd
                        If $iTry=$iMaxTries Then MsgBox(16, "Fehler", "Leider hat das nicht geklappt. Bitte die richtige Datei in das Fenster ziehen!", Default, $hMainGui)
                    EndIf            
            EndSwitch     
        WEnd
    
    EndFunc
    
    
    
    
    Func _handleFile($sFile)
             $sPath = _PathSplit($sFile, $szDrive, $szDir, $szFName, $szExt)
      
        If Not FileExists($sFile) Then return SetError(1, 0, False)
        Local $sPassword = _getPassword()
        
        If @error Then return SetError(2, @extended, False)
        _makeCert($sFile, $sPassword)
        
        If @error Then return SetError(3, @error, False)
        
         ; IF Not $spath = ".pfx" Then return SetError(4, 0, True)
        
        return True
    EndFunc
    
    
    Func _getPassword()
    IF Not $spath = ".pfx" Then return
    ;$inp = InputBox("Bitte geben Sie Ihr Passwort ein:", "", "", "*")
           Local $sPassword = InputBox("Sicherheit", "Geben Sie das Passwort für das Zertifikat ein.", "", " M20", Default, Default, Default, Default, Default, $hMainGui)
    
        If @error Then return SetError(1, @error, "")
        return $sPassword
    EndFunc
    
    Func _makeCert($sFile, $sPassword)
        Local $sCmd = 'certutil -f -p ' & $sPassword & ' -user -importpfx "' & $sFile & '"'
        Local $iPID = Run(@ComSpec & " /c " & $sCmd, "", @SW_HIDE) ; use /k instead of /c to see commandline result
        If @error Then SetError(1, @error, False)
        Local $hProcess = _WinAPI_OpenProcess($PROCESS_QUERY_LIMITED_INFORMATION, 0, $iPID)
        If @error Then SetError(2, @error, False)
        While ProcessExists($iPID) and Sleep(10)
        WEnd
        Local $iError = _WinAPI_GetExitCodeProcess($hProcess)
        _WinAPI_CloseHandle($hProcess)
        If $iError<>0 Then SetError(3, $iError, False)
        return True
        
    EndFunc
    Alles anzeigen

    lg und Danke schon mal

    schönen Sonntag noch

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 4. Februar 2023 um 18:12

    Komando zurück, ich hatte es jetzt 10 mal versucht, keine Ahnung wieso, jetzt funktioniert es, recht herzlichen Dank noch mal, das mit der Funktion SetError war mir neu, Wieder was gelernt.

    lg und schönes Rest Wochenede allen Helfern

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 4. Februar 2023 um 17:14

    @Kanashius recht schönen Dank,also die fehler cases im mainLoop und die eigentlichen Fehler dann in einer ExtraFunction, wie geasagt ich hatte die Globals aus den Funktionen schon llange entfernt, bevor sich hier noch jemand beschwert, und ich bemühe mich immer meine Variablen eindeutig zu bennenen, aber was eindeutig ist, liegt wohl im Auge des Betrachters. Das Ding is, wenn ich das Pawor jetzt richtig eingebe kommt wieder das Passwortfeld, das funktionierte ja vorher. Auf jeden Fall Danke für den Denkanstoß. Wie schon erwänt, die Variable @Error liefert bei mir nicht den richtigen Errorlevel.

    lg und schönes Wochenende noch

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 4. Februar 2023 um 12:36

    Also noch mal konkret meien Frage, an welche Stelle packe ich denn am besten die checks, direkt in Schie While Scheife, oder alles einzenl in Funktionen, welches Vorgehen würdet Ih empfehlen, damit das ganze mehrn als einmal funktioniert?

    lg und schönes Wochenende

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 3. Februar 2023 um 23:08

    Also an den Globals in den Funktionen hats nicht gelegen, die habe ich nun alle erntfernt. Jemand noch ne Idee, wie gesagt den %Errorlevel% zieht er sich jetzt korrekt.

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 3. Februar 2023 um 22:59

    Danke für die Antwort, der Errorlevel entpricht dem aus der CMD, ich werde die GLoals aus den Funktionen entfernen, vielleicht lösst das ja mein Problem, dass das Errorhandlicg bei Fehleingabe nur einmal funktioniert.

    lg und schönen Abend

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 3. Februar 2023 um 19:04

    Also ich hab mal noch ein bisl rum experimentiert, mein Script ist jetzut in der Lage einen Errorwert auszulesen. Leider gint es noch ein kleines Problem. Wenn ich einmal das Passwort falsch eingebe fragt er noch mal, beim zweiten mal Faslscheingabe geht es nicht mehr, vielleicht sollt ich mal nen Tag Gras drüber wachsen lassen, vielleicht sieht ja einer den Fehler. Danke noch mal allen die geholfen haben. Mein Kurzscript schaut jetzt so aus:

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    
    #include <GuiConstants.au3>
    #include <FileConstants.au3>
    #include <ProcessConstants.au3>
    #include <WinAPIHObj.au3>
    #include <WinAPIProc.au3>
    #include <WinAPISys.au3>
    
    
    
    Global $dropFile_1, $dropFile_2, $label, $cmd, $PfxPath, $File
    Global $pfxFile, $pfxPassword, $pass, $Return, $msg, $Error, $hProcess
    
    
    ;mainGui
    GuiCreate('Drag and Drop', 530, 100, @DesktopWidth / 2 - 192, _
                @DesktopHeight / 2 - 235, -1, $WS_EX_ACCEPTFILES + $WS_EX_TOPMOST)
    
    $label = GUICtrlCreateLabel('Bitte ziehen Sie mit der Maus die erhaltene PFX-Datei in diese Fenster und lassen es hier fallen, danach geben Sie Ihr Passwot ein, welches Sie per Mail erhalten haben, den Rest erledige ich für Sie.', 0, 0, 530, 120)
      GUICtrlSetFont($Label, 16, 0, "Arial")
      GUICtrlSetBkColor($label, $GUI_BKCOLOR_TRANSPARENT)
      GUICtrlSetState($label, $GUI_DROPACCEPTED)
    GuiSetState() ;Loop GUI
    
    While 1
      $msg = GuiGetMsg()
        Select
        Case $msg = $GUI_EVENT_CLOSE
            GUIDelete()
            ExitLoop
    
        Case $msg = $GUI_EVENT_DROPPED
    
            If @GUI_DropId = $label Then
                $PfxPath = @GUI_DragFile
                MsgBox(262144, "Drop Result", $PfxPath)
                $File = $PfxPath
                
                Password()
                Makecert()
                
           MsgBox(262144, "Drop Result", $Error)
            
                If $Error = 0 Then
                  ;MsgBox(0, "Fehler", "all ok")
                  MakeCert()
                else
                  MsgBox(0, "Fehler", "Bitte wiederholen")
                  
                  Password()
                  checkpwd()     
                EndIf
                
            EndIf
      EndSelect
     WEnd
    Exit
    
    Func MakeCert()
     $cmd  = "certutil -f -p " & $pass & ' -user -importpfx "' & $file & '"' ;Ich empfehle immer die Verwendung von ' denn dann machen eingefasste " kein Problem mehr
      ConsoleWrite($cmd & @CRLF)
     global $Return = Run(@ComSpec & " /c " & $cmd, "", @SW_HIDE) ;Ich empfehle /k ansatt /c zu nutzen wenn man das Ergebnis sehen will, dann braucht man auch kein & Pause
    
       If Not $Return Then
        Exit
      EndIf
    
    $hProcess = _WinAPI_OpenProcess($PROCESS_QUERY_LIMITED_INFORMATION, 0, $Return)
         If Not $hProcess Then
          Exit
         EndIf
    
    ;Loop for process until closed.
    While ProcessExists($Return)
        Sleep(10)
    WEnd
    
     ConsoleWrite('Exit code: ' & _WinAPI_GetExitCodeProcess($hProcess) & @CRLF)
       $Error = _WinAPI_GetExitCodeProcess($hProcess)
      _WinAPI_CloseHandle($hProcess)
    
    EndFunc
    
    
    Func Password()
     global $pass= InputBox("Sicherheit", "Geben Sie das Passwort für das Zertifikat ein.", "", " M20")
     Return
    EndFunc
    Alles anzeigen

    lg und schönen Abend noch

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 2. Februar 2023 um 18:36

    okidoki dann weiss ich Bescheid, nur eine keine Frage möchte ich noch anschliessen, denke passt noch gut hier rein, ich habe jetzt folgende kleine GUI gescripted, mit passwort Eingabe, soweit kein Ding. Leider bekomem ich es nicht gelösst den Errolevel der CMD auszulesen, dh, wenn dieser 0 ist alels ok, wenn ungleich 0 zurück zur Passwortabfrage, gibt es dafür in AutoIT auch eine Lösung? habe es mit error versucht, aber das ist immer 0. Das Teil sieht jetzt so aus:

    AutoIt
    #include <GuiConstants.au3>
    #include <FileConstants.au3>
    #include <EditConstants.au3>
    
    Global $dropFile_1, $dropFile_2, $label
    Local $pfxFile, $pfxPassword
    
    GuiCreate('Drag and Drop', 530, 120, @DesktopWidth / 2 - 192, _
                @DesktopHeight / 2 - 235, -1, $WS_EX_ACCEPTFILES + $WS_EX_TOPMOST)
    
    $label = GUICtrlCreateLabel('Bitte ziehen Sie mit der MAus die erhaltene PFX-Datei in diese Fenster und lassen es hier fallen, danach geben Sie Ihr Passwot ein, welches Sie per Mail erhaltenb haben, den Rest erledige ich für Sie.', 0, 0, 530, 120)
    GUICtrlSetBkColor($label, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetState($label, $GUI_DROPACCEPTED)
    
    
    GuiSetState()
    
    While 1
      $msg = GuiGetMsg()
        Select
        Case $msg = $GUI_EVENT_CLOSE
            GUIDelete()
            ExitLoop
        Case $msg = $GUI_EVENT_DROPPED
            If @GUI_DropId = $dropFile_1 Then
                GUICtrlSetData($dropFile_1, @GUI_DragFile)
            ElseIf @GUI_DropId = $dropFile_2 Then
                GUICtrlSetData($dropFile_2, @GUI_DragFile)
            Else;If @GUI_DropId = $label Then
                ;MsgBox(262144, "Drop Result", @GUI_DragFile)
    
                $PfxPath = @GUI_DragFile
                ;MsgBox(262144, "Drop Result", $PfxPath)
                Global $File = $PfxPath
                
                Password()
                MakeCert()
    
            EndIf
      EndSelect
    WEnd
    Exit
    
    
    Func MakeCert()
    $cmd  = "certutil -f -p " & $pass & ' -user -importpfx "' & $file & '"' ;Ich empfehle immer die Verwendung von ' denn dann machen eingefasste " kein Problem mehr
     ConsoleWrite($cmd & @CRLF)
     $Return = Run(@ComSpec & " /c " & $cmd, "", @SW_HIDE) ;Ich empfehle /k ansatt /c zu nutzen wenn man das Ergebnis sehen will, dann braucht man auch kein & Pause
    EndFunc
    
    
    Func Password()
    global $pass= InputBox("Sicherheit", "Geben Sie das Passwort für das Zertifikat ein.", "", " M20")
     MsgBox(0, "Fehler", @error)
        If @error <> 0 Then
          MsgBox(0, "Fehler", "Geben Sie das Passwort erneut ein")
          Password()
         else 
         MsgBox(0, "Fehler", "alles ok")
        EndIf
    EndFunc
    Alles anzeigen

    Danke schon mal und einen angenehmen Abend noch

  • CMD Aurfuf haut nicht hin

    • casi4712
    • 2. Februar 2023 um 15:13

    Komando zurück, keine Ahnung was eben war, funktioniert wunderbar


    DANKEEEEEEEEE

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™