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:
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;)